我首先使用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。
我不确定在查看了几个问类似问题的问题之后我是否遗漏了一些东西。
答案 0 :(得分:0)
默认情况下,即使在基类上应用Table
数据注释,也不会激活EF继承。
可以通过向导出的DbSet
添加DbContext
来激活它:
public DbSet<BaseClass> BaseClass { get; set; }
还允许您使用多态查询,或者使用流畅的配置 - 所需的最低要求是:
modelBuilder.Entity<BaseClass>();