我有两个班级:
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 :(得分:1)
存储库数量的决定基于对域模型中聚合根的分析。如果Product
是Ingredient
的汇总根,则Ingredient
个实例在Product
之后不能存在。
Product
的{{1}}聚合根是?如果是,您应该在单Ingredient
中处理产品和成分,否则您应该为两个实体都有单独的存储库。
通常表示您需要两个存储库是多对多关系,但在这种情况下,EF实体与存储库的搭配不是很好,因为如果您在ProductRepository
和Product
之间具有直接导航属性您没有办法强迫开发人员使用第二个存储库进行Ingredient
访问和修改。