atc*_*way 9 c# entity-framework repository-pattern
我在这个问题中涉及以下层:
很多时候它非常直接:存储库层通过实体框架查询数据库并返回IList<SomeDomainEntity>到服务层的调用者.该类型返回是在领域模型中定义的类型.
我遇到的问题是当我需要跨POCO A,B和C进行查询并从中获取所有要返回的数据时.由于我不处理存储库中的任何逻辑,我需要将此数据返回到要处理的服务层(直接或更可能通过调用域模型上的某些逻辑).但是,我从存储库查询的结果中再没有一种类型可以返回给调用者.
一个匿名类型的课程在我看到的例子中处理这个,但由于我不是直接在Repository中处理返回数据中的那个逻辑而需要返回它,我需要一个物理类型来返回.以下是我想到的一些解决方案,但不确定我是否喜欢:
我不可能是唯一一个查询多个实体以获得需要添加到类型并返回给调用者的数据集合的人.为解决我的问题,通常的做法或标准方法是什么?
谢谢!
如果这些实体是相关的,并且您在一个地方查询所有实体,那么您应该尝试在您的域模型中找到它们的聚合根,或者如果它不存在,您应该引入一个新实体,如您在第一个中所述选项.直到它有意义才没有错.它应该为域概念建模,您可能有一个,因为您创建了该存储库方法.
如果这些实体不相关(好吧,可能在某种程度上相关,但不是如上所述)并且您只想一次性获取它们,那么您应该在服务层中处理它,您可以在其中使用多个存储库并撰写结果对象.
您可能听说过导航属性和急切加载的概念,但我在这里写的是因为它可能是您问题的另一个答案(我看不到您的域模型)
我不会考虑你的第三个建议(在存储库中创建viewmodels),因为它打破了分色.
| 归档时间: |
|
| 查看次数: |
2160 次 |
| 最近记录: |