我有一個通用的倉儲類更新實體
public class Repository<T>
where T : class
{
AccountingEntities ctx = new AccountingEntities();
public T Add(T entity)
{
ctx.Set<T>().Add(entity);
SaveChanges();
return entity;
}
public T Update(T entity, int id)
{
T existing = ctx.Set<T>().Find(id);
if (existing != null)
{
ctx.Entry(existing).CurrentValues.SetValues(entity);
SaveChanges();
}
return existing;
}
public T GetSingle(Expression<Func<T, bool>> filter)
{
var query = ctx.Set<T>().AsNoTracking().Where(filter).FirstOrDefault();
return query;
}
private void SaveChanges()
{
ctx.SaveChanges();
}
}
和我有兩個表項和銀行。每家銀行可以有多個項目。
我有兩個按鈕添加和編輯和一個全局存儲庫在我的形式。
當我打開並填寫數據,然後單擊添加這樣的記錄將保存每
事情是確定的,但在這個時候,當我點擊編輯會出現錯誤讓我們來看看
我的編輯按鈕的代碼:
private void _btnEdit_Click(object sender, EventArgs e)
{
var item = repository.GetSingle(i => i.Id == id);
// here i update property of item
item = repository.Update(item, item.Id);
// here i get updated item
}
我的問題是,在這行代碼
var item = repository.GetSingle(i => i.Id == id);
當我得到的項目,它的導航性能(這裏的銀行實體)充滿
,但在這行代碼
item = repository.Update(item, item.Id);
當我更新的項目,並得到它,它的導航性能(銀行)爲空
我無法使用物品。銀行,因爲它是空的。
我終於明白哪裏是我的添加和編輯方法創建的全局庫
Repository<Item> repository = new Repository<Item>();
和使用存儲庫的問題。當我創建
獨立的存儲設備中的每個添加和編輯的方法,它工作正常
我想知道爲什麼出現這種情況?
= repository.Update(項的itemId) ;'?你在這行中爲對象'item'分配一些東西?我相信你只需要執行'repository.Update(item,itemId);' – Vahx