我正在尝试仅为给定类的一部分键进行自动增量键生成:
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一起使用?
答案 0 :(得分:0)
我希望最后一行是(2,1)而不是(2,4)是否
为什么你会这么想。数据库必须为每个前导键值维护单独的序列/标识值。
使这种方法与EF一起使用?
它已经工作。您不必担心尾随键值中使用的实际数字。它们仍然有序。并且在EF / SQL Server中没有像您期望的那样生成密钥的简单方法。您必须启动事务,在查询密钥的现有最大值,插入行然后提交时对前导键值进行独占锁定。