我应该在哪里/如何通过域实体的LINQ投影创建视图模型?

时间:2016-11-06 08:59:23

标签: asp.net asp.net-mvc mvvm asp.net-core repository

创建视图模型我通常

  1. 使用存储库获取所需的实体,
  2. 映射到viewmodel(可以通过各种方式完成,例如在控制器中,使用AutoMapper,在服务类中等)。
  3. 但如果我有"宽"表,所以我需要使用LINQ投影创建视图模型?我希望Id实体中的NameProduct属性以及Id实体中的Customer属性 - 但我不想要休息,因为那很贵。

    所以我需要访问IQueryable<>,这只在上下文和存储库中可用。

    我的选择:

    • 在存储库中创建viewmodel。但这意味着域和UI紧密耦合。它还意味着UI类必须与域在同一个程序集中。

    • 从存储库中公开IQueryable<>,并允许服务类(或控制器)执行投影,并映射到viewmodel。但那&#34;泄漏&#34;域进入服务和用户界面。

    因此,在加载整个实体时,很容易保持整洁。但是当通过投影加载时,它很棘手。

    我还有其他/更好的选择吗?

    编辑:这不是一个重复的问题。说真的,那个以文本&#34开头;我在理解ViewModel的目的时遇到了问题。&#34;

0 个答案:

没有答案
相关问题