我正在開發一個利用實體框架的新項目。我愛上了關係反向,兩種類型的導航屬性都會讓我的生活變得更加輕鬆。 問題是:我們的項目經理認爲使用此設施可能會導致錯誤,因此建議我們不要使用它。實體框架(4.1)中具有一對多雙向關係有哪些優點和缺點?
比方說,我們有類別和產品:
public class Product
{
public int Id { get; set; }
public string Name { get; set; }
public virtual Category Category { get; set; }
}
public class Category
{
public int Id { get; set; }
public string Name { get; set; }
public virtual ICollection<Product> Products { get; set; }
}
他說,一個也可以,錯誤,productZ.Category設置爲categoryX,然後做一個categoryY.Products.Add(productZ)爲例。那麼當我們保存上下文時,什麼樣的關係會持續存在?最後一個?好的,如果第一個是正確的類別呢?而這種錯誤很難調試(我同意這一點)。
我不認爲這種情況會發生,但我真的尊重他的意見,他比我更有經驗,但我真的想說服他讓我們具有雙向導航屬性,唯一的理由是:if每個人都在這樣做,那麼它不能這麼糟糕。 :)
你們可以幫我一些更堅實的論點?
當我們添加一個新產品時,我們主要將這個類別分配給產品,然後插入它。有時我們會使用產品及其類別,但也需要從一個類別(甚至是所有類別)訪問所有產品。看到我的觀點? –
單個類別或所有類別的產品都可以通過對產品進行單獨查詢來訪問。 –