在T-SQL中,要解决插入/更新比赛条件,请使用WITH (UPDLOCK, SERIALIZABLE)
。示例:尝试在同一主键上插入的两个会话线程:
示例:
IF EXISTS(SELECT *
FROM dbo.Foo WITH (UPDLOCK, HOLDLOCK)
WHERE ID = @ID)
如何在最新版本的C#ASP Entity Framework 6 EF6中为OLTP环境应用此功能?在EF6中使用的关键字是什么?
我宁愿引用C#类对象,而不是使用上面的Inline SQL。
谢谢,
答案 0 :(得分:0)
通常,EF使用客户端乐观并发控制。在这种情况下,这意味着您在用于检查存在的密钥上是否具有主键或唯一索引,并且将密钥违例错误视为与在初始检查中查找现有实体相同。
如果您希望重复项很少,您也可以选择省略初始检查,只需依赖密钥违规错误。
大卫