5

私は Entity Framework 5 Code First を使用しており、次のモデルがあります。

class Document
{
    public int Id {get;set;}
    public String Name {get;set;}

    public IList<Page> Pages {get;set;}
}

class DocumentTemplate
{
    public int Id {get;set;}
    public String Description {get;set;}
    public String Name {get;set;}

    public IList<Page> Pages {get;set;}
}

class Page
{
    public int Id {get;set;}
    public string Text {get;set;}
}

子エンティティが 1 つの親を持つ識別関係をマッピングする方法を知っています。しかし、各親の識別関係を持つように Page エンティティをマップしたいと思います。

また、親関係は相互に排他的です。特定のページは、両方ではなく、DocumentTemplate または Document のいずれかに属します。

このようなマッピングは Entity Framework 5 で可能ですか?

親関係を除いて、それらは本質的に同じであるため、ページの個別のエンティティを作成したくありません。

ティア。

4

2 に答える 2

0

複数の親を持つことはできないと思いますが、次のオプションを検討します:
(任意のドキュメントはいくつかのテンプレートに属し、テンプレートのみがページを持つことができます)

class Document
{
    public int Id {get;set;}
    public String Name {get;set;}
    public DocumentTemplate DocumentTemplate{get;set;}
}

class DocumentTemplate
{
    public int Id {get;set;}
    public String Description {get;set;}
    public String Name {get;set;}

    public IList<Page> Pages {get;set;}
}

class Page
{
    public int Id {get;set;}
    public string Text {get;set;}
}
于 2013-06-22T08:25:44.933 に答える
0

これはあなたのために働くでしょう:

class Page
{
    public int Id {get;set;}
    public string Text {get;set;}

    public int? DocumentId { get; set; } // non-mandatory relationship to Document
    public int? DocumentTemplateId { get; set; } // non-mandatory relationship to DocumentTemplate

    // ... navigation properties
}
于 2013-07-09T23:36:09.490 に答える