EF查询上下文实体对象在多线程模式下必须得一个方法对应一个实例,即:
/// <summary>
/// 新增
/// </summary>
/// <param name="data">ConsumeRecord</param>
public void AddConsumeRecord(ConsumeRecord data)
{
ExceptionBaseEx.VerifiParamIsNull(data, "data");
ExceptionBaseEx.VerifiParamsIsNullOrWhiteSpace(data.KeyId, "data.KeyId");
ConsumeRecordModelContext context = new ConsumeRecordModelContext();
context.Entry(data).State = System.Data.Entity.EntityState.Added;
context.SaveChanges();
}
不能够使用下面这种的方式创建对象实例,即:
private ConsumeRecordModelContext baseContext = null;
public ConsumeRecordDaoIntf()
{
baseContext = new ConsumeRecordModelContext();
}
否则会出现多线程错误,即每个对象都访问同一个实例,这样会造成线程不安全,无法获取当前操作的实例对象的状态。