C# C-操作之间的实体框架锁定记录

C# C-操作之间的实体框架锁定记录,c#,entity-framework,entity-framework-4.1,objectcontext,rowlocking,C#,Entity Framework,Entity Framework 4.1,Objectcontext,Rowlocking,我有一个实现实体框架4.1的应用程序,我为每个方法使用一个上下文实例 object select() { using(DBContext context = new DBContext()) { return context.table.Where(e => e.id == 1).FirstOrDefault(); } } void update(entity) { using(DBContext context = new DBConte

我有一个实现实体框架4.1的应用程序,我为每个方法使用一个上下文实例

object select()
{
    using(DBContext context = new DBContext())
    {
        return context.table.Where(e => e.id == 1).FirstOrDefault();
    }
}

void update(entity)
{
    using(DBContext context = new DBContext())
    {
        context.Attach(entity);
        context.ObjectStateManager.ChangeObjectState(entity, EntityState.Modified);
        context.SaveChanges();
    }
}
它工作正常,问题是应用程序是多用户的,他们可以修改相同的记录,我想防止一个用户更改另一个用户正在修改的记录,直到更新记录

entity = select(); // get the record and lock it
// do some change ,nobody can modify this record in the db
update(); // update the record and unlock it

有什么方法可以做到这一点吗?

不要这样做-改用乐观并发模型:抓取实体,编辑它,保存它时,确保它在此期间没有被更改。效率更高,最终更容易处理,麻烦更少,冲突可能性更小。听。看看这个:我明白了,谢谢@marc_;您知道如何在实体框架中使用分离的实体实现乐观并发吗?