【发布时间】:2017-10-27 04:36:41
【问题描述】:
在 T-SQL 中,为了解决插入/更新竞争条件,使用WITH (UPDLOCK, SERIALIZABLE)。示例:两个会话线程试图在同一个主键上插入:
- Mythbusting Concurrent Update Insert Connections, Michael Swart
- Insert Update Racing Condition, Dan Guzman
例子:
IF EXISTS(SELECT *
FROM dbo.Foo WITH (UPDLOCK, HOLDLOCK)
WHERE ID = @ID)
如何在最新版本的 C# ASP Entity Framework 6 EF6 中为 OLTP 环境应用这一点?在 EF6 中使用哪些关键字?
我宁愿引用 C# 类对象,而不是使用上面的内联 SQL。
谢谢,
【问题讨论】:
-
那是2014年,希望实体框架6有这个机制
-
不,永远不会。
-
那很奇怪,那个想法是对象关系映射器的重点,要摆脱使用 sql 数据和使用 C# 对象,无论如何谢谢
-
确实如此,这就是为什么 ORM 试图让用户远离锁定和事务的细节。换句话说:他们追求持久的无知。 ORM 将完成 OLTP 系统中 95% 的常规用户-数据库交互。使用底层数据存储的更高级功能总是需要专门的接口(如 TransactionScope 或 ADO.Net)。
标签: c# sql-server entity-framework