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 中是否可以进行这样的映射?

我不想为页面创建单独的实体,因为它们本质上是相同的,除了父关系。

TIA。

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 回答