我正在使用EF 5,並且啓用了延遲加載。當我從數據庫中檢索一個實體時,它完美地工作。實體框架檢索導航屬性
這裏是我的問題。我有一個通用的存儲庫來執行數據庫操作。
public int Update(T t) //Update method implemented at repository layer
{
dbSet.Attach(t);
context.Entry(t).State = EntityState.Modified;
return context.SaveChanges();
}
public T Update(T t, int id) //This Method calls the above method to
{
if (Update(t) > 0)
{
//Now entity is updated so retrieve the entity from the database.
return Get(id); //This line of code doesn't return entity with reference. It does return the updated entity.
}
return null;
}
現在,當我查詢實體使用主鍵來獲得更新的實體,它給了我更新的實體,但是沒有任何參考性。我不能在這裏使用懶加載,因爲它會引發異常。
更新enttity後,我注意到dbSet.Local有更新的實體。所以我試圖清除之前我檢索更新的實體,但沒有運氣。我也嘗試通過上下文重新加載實體,但不重新加載導航屬性。我無法使用引用屬性作爲我使用的通用存儲庫。 我可以完成的唯一方法是處理並創建上下文和dbset的新實例。
我想返回填充了關係屬性的更新實體。有沒有人有一個好的解決方案。
有什麼異常? – 2013-01-06 23:34:14
它不會拋出異常。所有關聯的屬性都是空的。 –
你說,因爲它拋出一個異常,你不能使用延遲加載。 – 2013-01-14 02:42:50