是否有一种方法可以禁用EntityFramework中抛出的并发错误?
例如:using (xEntities5 entities = new xEntities5())
{
entities.Domains.MergeOption = System.Data.Objects.MergeOption.NoTracking;
Domain domain = new Domain() { DomainId = id };
EntityKey key = entities.CreateEntityKey(entities.CreateObjectSet<Domain>().EntitySet.Name, domain);
domain.EntityKey = key;
entities.Attach(domain);
//entities.AttachTo(entities.CreateObjectSet<Domain>().EntitySet.Name, domain);
entities.DeleteObject(domain);
return entities.SaveChanges(); // returns affected rows... must catch error?
}
是否有一种方法,不必做尝试/捕获周围SaveChanges,以检测是否没有被删除?
据我所知,您无法关闭并发错误。并发性错误基于受影响的行数,因此,如果您想删除一行,而它没有被删除(例如,因为它不再存在),则会触发并发性异常。此外,SaveChanges
在事务中工作,所以如果你想删除5行,只有4行被删除,异常被触发,所有删除被回滚。
ConcurrencyMode.Fixed
的列,则并发性测试可能更具限制性。这些列用于SQL语句的条件,因此只能处理未修改的数据库记录。
一旦你得到并发性异常,你应该解决它
SaveChanges()将抛出异常并且不会在内部捕获它们,因此如果您想继续执行,则必须使用try/catch。SaveChanges()还返回一个方法,其中包含提交给数据库的实体数量,即,如果没有发生错误:-)
HTH .