存储库契约/接口和实现的位置
本文关键字:实现 位置 接口 契约 存储 | 更新日期: 2023-09-27 18:02:13
帮助更深的理解,有契约/接口的存储库
public interface ICoolRepository
{
Entity GetById(int id);
}
应该在域、基础设施或应用模块的什么地方声明?
存储库接口可以在这样的实体中使用吗?
public class User
{
...
public DoStuff(ICoolRepository repo)
{
//here goes using cool repository
}
...
}
在哪里可以毫无问题地使用它?请给出原因
接口应该在领域模型中定义,因为它是泛在语言的一部分(它表示,什么是聚合,什么不是,它表示应该寻找聚合的方式,这与某些用例直接或间接相关)。存储库的实现应该转到Infrastructure,因为它包含DAL/ORM引用。
在实体中使用存储库是相当不常见或错误的,但是你的问题太一般了,无法给你任何有意义的答案。