내 응용 프로그램에 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();
}
}
http://stackoverflow.com/questions을 : 당신은 여기에서 자세한 내용을 찾을 수
: 그래서 그냥 트랜잭션 범위에() 호출 SaveChanges를을 마무리/6126616/is-dbcontext-thread-safe), 경쟁 조건이 가장 적은 문제입니다. –
더 자세히 설명해주세요! – Tomas