【发布时间】:2014-05-07 10:54:42
【问题描述】:
帮助理解更深,仓库有合约/接口
public interface ICoolRepository
{
Entity GetById(int id);
}
应该在域、基础设施或应用模块中声明它的什么地方?
可以在这样的实体中使用存储库接口:
public class User
{
...
public DoStuff(ICoolRepository repo)
{
//here goes using cool repository
}
...
}
在哪里可以毫无问题地使用它?请给出原因
【问题讨论】:
-
实际上你应该考虑一下为什么你想要一个域实体中的存储库的原因。存储库是否定义实体?考虑分离关注点。
-
@MikeSW 在某些情况下实体应该与集合一起使用,所以我需要知道:我可以使用存储库接口作为实体中的集合还是应该将其移动到某个服务,它应该是域、基础设施还是应用服务?
-
如果“应该工作”表示存在需要集合的行为,那么该集合应该是方法的参数。您决定该集合是存储库还是其他服务的结果。它取决于域。
标签: c# interface persistence domain-driven-design ddd-repositories