我出现这个错误的原因是因为我需要做一个EF的事务,实现删除新增操作,
using (var context = new DatabaseContext())
using (var trans = context.Database.BeginTransaction(System.Data.IsolationLevel.ReadCommitted))
{
try
{
setInfo(context);
trans.Commit();
}
catch (Exception ex)
{
trans.Rollback();
}
}
然后我在setInfo方法里去使用context的去删除新增操作,当我给Db赋值的时候我又调用了另一个DbContext时,出现错误:一个实体对象不能由多个 IEntityChangeTracker 实例引用。
1. var model = new model();
2. model.name = "";
3. model.user = DbContext.ModelListUsre.FirstOrDefault(user => user.Username.Equals("张三"));
4. context.ModelList.Add(model);
5. context..SaveChanges();
//在第3行我使用了另外一个DbContext。
//当我执行到第4行的时候提示错误:“一个实体对象不能由多个 IEntityChangeTracker 实例引用。”。
总结:当我们在用EF事务时,不能使用当前事务以外的DbContext。