帮助更深入地了解存储库的合同/接口
public interface ICoolRepository
{
Entity GetById(int id);
}
应该在域名,infrastracture或app模块中宣布?
可以在类似的实体中使用存储库接口:
public class User
{
...
public DoStuff(ICoolRepository repo)
{
//here goes using cool repository
}
...
}
哪里可以使用没问题?请给出理由
答案 0 :(得分:3)
接口应该在域模型中定义,因为它是泛在语言的一部分(它表示,什么是聚合,什么不是,它表达了聚合应该被寻找的方式,直接或间接地与某些相关)用例)。存储库的实现应该包含在基础结构中,因为它包含DAL / ORM引用。
在实体中使用存储库是相当罕见或错误的,但您的问题过于通用,无法给出任何有意义的答案。