我正在尝试获取并更新EF对象但我收到错误:
附加信息:无法引用实体对象 IEntityChangeTracker的多个实例。
我明白这是什么问题。 但是如何正确编写数据访问方法以避免这样的问题?
var store = (new StoresRepository(connectionString)).GetStore(1);
// Change store object
(new StoresRepository(connectionString)).Update(store);
数据访问代码:
public class StoresRepository
{
AppDbContext context;
public StoresRepository(string connectionString)
{
context = new AppDbContext(connectionString);
}
public Store GetStore(int storeId)
{
var store = context.Stores.SingleOrDefault(x=>x.StoreId == storeId);
return store;
}
public void Update(Store store)
{
context.Stores.Attach(store);
context.SaveChanges();
}
答案 0 :(得分:1)
创建一个Repository对象,而不是每次都创建新对象。
var repo = new StoresRepository(connectionString);
var store = repo.GetStore(1);
repo.Update(store);