2012-05-19 87 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访问和修改。