实体框架6部分主键自动递增

时间:2018-02-04 05:43:51

标签: asp.net sql-server entity-framework entity-framework-6

我正在尝试仅为给定类的一部分键进行自动增量键生成:

class MyEntity
{
    [Key]
    public int OtherEntityId { get; set; }
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int MyEntityId { get; set; }

    [ForeignKey("OtherEntityId")]
    public virtual OtherEntity OtherEntity { get; set; }
}

所以我的问题是自动生成的密钥不会从每个OtherEntityId的1开始。

我的意思是这是我的表在插入一些值后的样子:

| OtherEntityId | MyEntityId |
|      1        |      1     |
|      1        |      2     |
|      1        |      3     |
|      2        |      4     |

我希望最后一行是(2,1)而不是(2,4)

有没有办法让这项工作与EF一起使用?

1 个答案:

答案 0 :(得分:0)

  

我希望最后一行是(2,1)而不是(2,4)是否

为什么你会这么想。数据库必须为每个前导键值维护单独的序列/标识值。

  

使这种方法与EF一起使用?

它已经工作。您不必担心尾随键值中使用的实际数字。它们仍然有序。并且在EF / SQL Server中没有像您期望的那样生成密钥的简单方法。您必须启动事务,在查询密钥的现有最大值,插入行然后提交时对前导键值进行独占锁定。