最近,我們關閉了實體框架的延遲加載和代理生成。在此之前,在我們對EF進行了新的更改之後,我們會收到整個對象圖。我現在正在做的是,在提交之後,我調用存儲庫上的FindById方法來獲取新對象(我將導航屬性包含在newley創建的對象中)。我的問題是,這是創建後的標準做法,還是客戶端應該負責第二次調用服務以獲取新創建的對象?在使用Service和Entity Framework 4.1時保存並返回新創建的對象?
public SomeObject Create(SomeObject someObject)
{
_repository.Add(someObject);
_repository.UnitOfwork.Commit()
//this did not exist when lazy loading and proxy generation were enabled.
var newObject = _repository.FindById(someObject.Id);
return newObject;
//Before we would jsut return the created object because everything was loaded.
//return someObject
}
我只是想知道這是否是一個最佳實踐的對象與延遲加載和代理的創建禁用創建後:在服務
保存方法。我很想知道其他開發人員如何處理這個問題。
我不明白你爲什麼要加載你剛剛保存,而且還有在手的對象。如果'FindById'使用'Commit'使用的同一個上下文,'newObject'只會引用與'someObject'相同的對象,它仍然與上下文相連。我的猜測是你的問題與加載導航屬性有關,但對我而言並不明確。 FindById是否包含所有導航屬性的Include屬性,這些導航屬性應該取代以前的惰性加載? – Slauma 2012-03-28 13:13:11
@Slauma,你對包含和導航屬性是正確的。我確實想在提交後加載導航屬性。 – DDiVita 2012-03-28 18:47:24