2012-05-19 38 views
0

我有兩個類:插入/更新導航屬性

public class Product : Base 
{ 
    public string Name { get; set; } 
    public string Description { get; set; } 
    public virtual List<Ingredient> Ingredients { get; set; } 
} 

public class Ingredient:Base 
{ 
    public string Description { get; set; } 
} 

我的問題是:什麼是插入/更新成分的產品的最佳方式是什麼? 假設我需要在插入/更新前驗證產品和成分,我應該創建一個產品存儲庫還是產品存儲庫和配料庫?


我看到這是很容易當我用我的DbContext我的控制器內..但如果我需要通過模塊製造系統(BL,DAO)?

+0

如果您使用實體框架,我認爲您應該只使用存儲庫,如果你有一個大的分層應用程序。是這樣嗎? –

+0

是的,那是我的情況。 – MuriloKunze

+0

這是一個轉貼:http://stackoverflow.com/questions/10623668/navigation-properties-repository。請不要。您隨時可以編輯您的原始問題以改進它。 –

回答

1

存儲庫數量的決定基於對域模型中聚合根的分析。如果ProductIngredient的聚合根,那麼在沒有Product的情況下,您的Ingredient實例不能存在。

Product聚合根Ingredient?如果是的話,你應該處理產品和成分單獨ProductRepository如果不是你應該有兩個單獨的存儲庫。

您需要兩個存儲庫的通常指示是多對多關係,但在這種情況下,EF實體與存儲庫的配合不好,因爲如果您在ProductIngredient之間有直接導航屬性,則您沒有任何方法強制開發人員使用第二個存儲庫進行Ingeredient訪問和修改。