我知道当使用table per concrete type继承时,所有派生类都共享相同的标识。我想要做的是为访客和 AccountOwner设置单独的身份。
经过几个小时的谷歌搜索,我找到了两个解决方案。一种是为派生类使用不同的种子,(我知道如何实现它,但我不喜欢它),第二种是使用不同的身份增量。
基类:
public abstract class User
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int UserID { get; set; }
}
派生类:
public class Guest : User
{
//Other properties here
}
派生类:
public class AccountOwner: User
{
//Other properties here
}
如果我使用不同的身份增量,访客的主键看起来像:1,3,5,6和 AccountOwner 2,4,6, 8。
现在的问题是,
如何实现不同的主键自动增量?
我错过了什么吗?你有更好的解决方案吗?
我不想改变我的数据库结构。
答案 0 :(得分:0)
您无法实现不同的自动增量。
我决定使用Table per Hierarchy而不是Table per Hierarchy,即使我不想改变我的结构。
而不是我现在拥有的三个不同的表,帐户,我正在为不同类型使用描述符。因为我只有一个表,所以它们共享相同的自动增量。