我在我的应用程序中使用了EF 6 and Code First
数据库解决方案。同一个应用程序在几台计算机上运行并访问相同的数据库。数据库中的一个整数字段将从这些应用程序更新,此字段的值会减少。代码如下,我认为这可能是竞态条件问题。你在这种情况下如何解决问题?EF预防竞争条件
public partial class CaContext
{
public override int SaveChanges()
{
var addedStatistics = ChangeTracker.Entries<Statistic>().Where(e => e.State == EntityState.Added).ToList().Select(p => p.Entity).ToList();
var testOrders = GetUser.Orders.First();
testOrders.Credits = testOrders.Credits - addedStatistics.Count; //Race condition here
return base.SaveChanges();
}
}
一个'DbContext' [不是线程安全的(http://stackoverflow.com/questions/6126616/is-dbcontext-thread-safe),所以竞争条件是最少的问题。 –
请详细解释一下?! – Tomas