你已经得到答案了。各层之间的依赖关系是从外到内。由于数据层的实现(!)位于基础设施的右侧,因此它依赖于核心。
您的域还需要访问存储库,因此接口进入您的核心/域,实现发生在外部。您只需注意不要将任何不属于您的核心域的类型放入接口域中(例如 EF Core 的
Entry<T>
等)。
如果外层对内部层有依赖关系(Repository 接口),这并没有什么问题,但如果您从那里引用接口,它仍然不意味着使用域层。该图片意味着“查询可以绕过域层”(强调“可以”,而不是“必须”),可以直接从控制器访问存储库,而无需通过域。即使在领域中设计接口也是如此,毕竟它只是一个接口。
“查询可以绕过域层”的意思是,您不必使用域或应用程序服务来访问存储库,而是可以直接使用存储库接口。