考慮下面的過度簡化代碼:業績不佳的實體關係修復了自己,而不是等待實體框架SaveContext
public class Child
{
public virtual Parent Parent { get; set; }
}
public class Parent
{
public List<Child> Children { get; set; }
}
在我的消費者的代碼,我有:
parent.Children.Add(child);
這沒有設置child.Parent,直到我調用db.SaveContext();
我看到這是一個問題,例如,在保存之前將同一對象的幾個操作鏈接起來。
我的問題是,我應該不是這樣:
class Child
{
public virtual Parent Parent { get; set; }
public void SetParent(Parent parent) {
if (this.Parent != null) { this.Parent.Children.Remove(this); }
parent.Children.Add(this);
this.Parent = parent;
}
}
請注意代碼片段僅僅是用於說明目的。
通常我的問題是,我應該自己處理關係修復,而不是依靠EF。
你爲什麼要處理這個問題?你關心什麼? –
我的擔心是,除非我'保存',對象不是在一個正確的狀態。依靠EF來解決混亂似乎是錯誤的。 –
這不是一團糟。你只是不知道實體的ID。 如果我沒有記錯的話 - 例如使用ObjectContext(在dbContext之前)將所有內容拋出 - 引用導航屬性的其他方面,分配Ids(如果知道)等。 –