实体框架TPC重复的主键



我知道,当使用表每具体类型继承时,所有派生类都共享相同的标识。我想做的是为GuestAccountOwner建立一个单独的身份

经过几个小时的谷歌搜索,我找到了两个解决方案。一种是为派生类使用不同的种子(我知道如何实现,但我不喜欢),第二种是使用不同的标识增量

基类:

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
}

如果我使用不同的身份增量,Guest的主键看起来像:1、3、5、6和AccountOwner2、4、6、8。

现在的问题是,

如何实现不同的主键自动递增

我错过什么了吗?你有更好的解决方案吗

我不想改变我的数据库结构

您不能实现不同的自动增量

尽管我不想改变我的结构,但我还是决定使用"按层次表"而不是"按层次图"。

我现在有了三个不同的表,而不是一个Accounts,并且我对不同的类型使用了Descriminator。因为我只有一个表,所以它们都共享相同的自动增量。

最新更新