[我正在阅读这篇文章[1],该文章涉及通过使用查询对象来摆脱存储库并直接(特别是EF)接受ORM。
然后,Onion体系结构/ Clean体系结构的哪个层将属于Query对象?我以某种方式感到它们属于域核心,但想再次检查。
[1] https://lostechies.com/jimmybogard/2012/10/08/favor-query-objects-over-repositories/
在Clean Architecture
和Onion Architecture
方法中,无法使用Query objects
,因为对象是业务规则/域的一部分,而ORM /存储库是基础结构/外部接口的一部分。
查看Onion Architecture描述和Clean Architecture描述。两种方法都明确指出:业务对象独立于外部资源。允许业务对象知道如何从数据库中保存/检索自身,完全违反了所提到的声明。
顺便说一下,链接中的文章说
我认为在您的ORM上创建抽象并没有多大价值,如果您直接在UI层中使用ORM,我也不认为这很糟糕。
直接在UI层中使用ORM是一个非常糟糕的决定,最好不要做这样的事情,并且明确地将责任层分开。我建议您不要遵循该文章中的信息。