代码首先在表之间共享主键

时间:2017-02-10 10:52:17

标签: c# asp.net sql-server entity-framework ef-code-first

我首先使用Entity Framework代码尝试创建一个数据库,我有几个共享唯一主键的表。

我的域类有以下结构,并希望FirstClass,SecondClass,ThirdClass都可以创建为链接到存储共享密钥的BaseTable的表。我已经在这个例子中包含了SharedClass类,因为我在我的项目中也有这个strutcure。

[Table("BaseTable")]
public abstract class BaseClass {
    public int Id { get; set; }
}

public abstract class SharedClass : BaseClass {
    public string SharePropertyOne { get; set; }
    public string SharePropertyOne { get; set; }
}

[Table("FirstClass")]
public abstract class FirstClass : SharedClass {
    public string SharePropertyOne { get; set; }
    public string SharePropertyOne { get; set; }
}

[Table("SecondClass")]
public abstract class SecondClass : SharedClass {
    public string SharePropertyOne { get; set; }
    public string SharePropertyOne { get; set; }
}

[Table("ThirdClass")]
public abstract class ThirdClass : SharedClass {
    public string SharePropertyOne { get; set; }
    public string SharePropertyOne { get; set; }
}

目前正在发生的是FirstClass,SecondClass和ThirdClass都在创建,但是都有自己的主键,并且没有创建BaseTable。

我不确定在查看了几个问类似问题的问题之后我是否遗漏了一些东西。

1 个答案:

答案 0 :(得分:0)

默认情况下,即使在基类上应用Table数据注释,也不会激活EF继承。

可以通过向导出的DbSet添加DbContext来激活它:

public DbSet<BaseClass> BaseClass { get; set; }

还允许您使用多态查询,或者使用流畅的配置 - 所需的最低要求是:

modelBuilder.Entity<BaseClass>();
相关问题