【发布时间】:2011-06-08 15:13:28
【问题描述】:
在处理具有多个大型主表的初始项目时,存储库模式似乎运行良好。
但是随着项目的发展,它似乎有点不灵活。假设您有很多挂在主表之外的子表,您是否需要为每个表创建一个存储库?
例如
CustomerAddress Record 有以下子表:
-> 县
-> 国家
-> 客户类型
在 UI 上,需要显示 3 个下拉列表,但是为上述每个表编写一个存储库来选择下拉列表的数据有点繁琐。
是否有最佳实践/更有效的方法?
例如,假设您有一个主 CustomerAddress 存储库,我猜它是“聚合根”,它从基本 repo 接口继承了主要的 CRUD 操作。
之前我已经简化了聚合根并直接进入了这类表的上下文。
例如
public Customer GetCustomerById(int id)
{
return Get(id);
}
public IEnumerable<Country> GetCountries()
{
return _ctx.DataContext.Countries.ToList();
}
等等……
但有时它并不感觉正确,因为国家不是客户的一部分,但我觉得我需要将它附加到某些东西上,而不必为每个表创建数以千计的存储库.对我来说,每张桌子的回购肯定也不合适。
【问题讨论】:
-
好吧。恕我直言,
Country不会因为您删除CustomerAddress而被破坏。我认为它会继续蓬勃发展。它不是子聚合。 -
避免使用 ORM 的存储库;) ayende.com/blog/3955/repository-is-the-new-singleton
标签: c# entity-framework repository-pattern