经过大量的拔毛后,我决定加入堆栈溢出社区并发布我的第一个问题。当我尝试更新时,我收到此错误“实体不能被IEntityChangeTracker的多个实例引用”。
这是IRepository。
public interface IRepository<T>
{
void Update(T item);
}
和存储库。
public class Repository<T> : IRepository<T> where T : class
{
private readonly DbContext _dbContext;
public Repository(DbContext context)
{
this._dbContext = context;
}
public virtual void Update(T item)
{
_dbContext.Entry(item).State = EntityState.Modified; // This is where the error happens
_dbContext.SaveChanges();
}
}
和Model class。
Repository<Model> _model = new Repository<Model>(new ModelContext());
public void Update(Model item)
{
this.Modified = DateTime.Now;
_model.Update(item);
}
}
和模型上下文。
public class ModelContext : DbContext
{
public ModelContext()
: base("name=DbContext")
{
}
public DbSet<ModelContext> Model { get; set; }
}
还有控制器
public class ModelController : Controller
{
Model _model = new Model();
public ActionResult Edit(int id, string name)
{
Model item = _model.GetById(id);
if (Request.IsAjaxRequest())
{
item.Name = name;
item.Update(item);
}
return View();
}
}
现在这是一个很大的问题,如果那里的一些救世主可以让我的一天。