相关疑难解决方法(0)

在Repository层中查询多个实体时要返回什么类型?

我在这个问题中涉及以下层:

  • 服务层(使用IoC调用存储库)
  • 域模型(POCO /域实体,定义的存储库接口)
  • 存储库层(EF .edmx和已实现的存储库)

很多时候它非常直接:存储库层通过实体框架查询数据库并返回IList<SomeDomainEntity>到服务层的调用者.该类型返回是在领域模型中定义的类型.

我遇到的问题是当我需要跨POCO A,B和C进行查询并从中获取所有要返回的数据时.由于我不处理存储库中的任何逻辑,我需要将此数据返回到要处理的服务层(直接或更可能通过调用域模型上的某些逻辑).但是,我从存储库查询的结果中再没有一种类型可以返回给调用者.

一个匿名类型的课程在我看到的例子中处理这个,但由于我不是直接在Repository中处理返回数据中的那个逻辑而需要返回它,我需要一个物理类型来返回.以下是我想到的一些解决方案,但不确定我是否喜欢:

  1. 在域模型中创建一个新的域实体,它实际上是我查询的所有数据的组合,因此可以返回这个新的单一类型.创建abritrary类型以满足查询需求似乎是错误的.
  2. 使服务层分别调用A,B,C实体上的各个存储库,然后处理来自每个返回对象的数据.这似乎是很多额外的工作.
  3. 创建一个要返回的ViewModel.这对我来说似乎也不合适.我在服务层和UI层之间大量使用ViewModel类,但从未看到它们用于从存储库返回.

我不可能是唯一一个查询多个实体以获得需要添加到类型并返回给调用者的数据集合的人.为解决我的问题,通常的做法或标准方法是什么?

谢谢!

c# entity-framework repository-pattern

9
推荐指数
1
解决办法
2160
查看次数

标签 统计

c# ×1

entity-framework ×1

repository-pattern ×1