【发布时间】:2014-12-19 10:05:09
【问题描述】:
我在带有服务层的 MVC 应用程序中使用 Entity Framework 6.1.1(SQL Server 后端)。
我想从服务层读取数据库以从数据库中获取一行,更新其上的某些内容以告知正在处理它以停止对它的下一次读取,然后返回它。
所以基本上如果 2 个用户调用相同的服务,他们都会得到不同的行,因为第一次读取会更新记录(比如将“处理”列更改为 true)。第二次读取将绕过这条记录并转到下一条。
我想不出在 EF 中使用普通 linq 查询的方法。我能想到的唯一方法是使用存储过程。虽然我还不是 100% 确定如何在 SP 中做到这一点。如果这是唯一的选择,那么我会进行更多调查。
这可以使用 EF 完成吗?
【问题讨论】:
-
这一切发生的太快了,根本不重要吗?
-
你可以只选择处理 为 true 的行并以这种方式获得下一行吗?
-
@Derek 在繁忙的网站上,它肯定会发生。读取、更新和保存所需的时间会发生变化。
-
@timothyclifford 这只会得到下一行,不会阻止下一个人得到它。
-
您可以在 DbContext 中锁定对表的访问,以确保 2 个用户不会得到相同的结果(获取行、更新、保存
lock块中的更改。类似于模仿存储过程。跨度>
标签: c# entity-framework linq-to-entities