0

我将如何为具有以下关系的实体框架 5 定义一组 POCO 类:

Primary 与 1-1 关系Secondary.Data,Primary 与 1-1 关系Tertiary.Data

        ---------(1)- Secondary.Data
Primary +
        ---------(1)- Tertiary.Data

这样 Primary 有一个自动编号(SQL Server 中的 IDENTITY)主键(Primary.PrimaryID),并且每个子类主键也是 Primary 的外键(例如 Secondary.Data.PrimaryID,既是主键又是外键Primary.PrimaryID

编辑

SecondaryTertiary表示 SQL Server 中的架构,并在代码中由命名空间表示。

4

1 回答 1

3

在Primary类中如下:

    [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int PrimaryID { get; set; }

    public virtual Secondary SecondaryEntity { get; set; }
    public virtual Tertiary TertiaryEntity { get; set; }

在其他两个类中,您将为 ID 执行此操作:

    [Key, ForeignKey("PrimaryEntity")]
    public int PrimaryID { get; set; }

    public virtual Primary PrimaryEntity { get; set; }

ForeignKey 属性需要指向您在对象上拥有的虚拟属性的名称,在本例中为 PrimaryEntity。

我希望这有帮助。

编辑:根据 Ladislav 对这个问题的回答以及我们在 Chat 中讨论的内容,您需要确保您的 Secondary 和 Tertiary 类虽然位于不同的命名空间和模式中,但具有不同的类名。

于 2012-12-27T19:01:19.710 回答