Cos*_*nea 4 sql-server entity-framework-4 ef-code-first
我想要做的基本上就是当你做类似的事情时NHibernate所做的事情:
var instance = session.Get<Customer>(id, LockMode.Upgrade);
Run Code Online (Sandbox Code Playgroud)
我需要锁定数据库中的实体行.为什么我需要那个?想象一下,工作流实例可以同时由多个角色(人或进程)更新.
我的约束不允许乐观锁定解决方案.
EF对此没有支持.如果要通过查询锁定某些记录,则必须执行以下操作:
using (var scope = new TransactionScope(...))
{
using (var context = new YourContext(...))
{
var customer =
context.ExecuteStoreQuery<Customer>("SELECT ... FROM Customers WITH (UPDLOCK) WHERE ...");
// rest of your logic while record is locked
scope.Complete();
}
}
Run Code Online (Sandbox Code Playgroud)
或者context.Database.SqlQuery在DbContext API的情况下.