【问题标题】:How do I use Automapper Projections in a Generic Repository to avoid circular references?如何在通用存储库中使用 Automapper 投影来避免循环引用?
【发布时间】:2018-04-20 15:01:33
【问题描述】:

我在我的 MVC 应用程序中使用通用存储库,并且我还使用自动映射器在视图模型之间进行映射。我需要这样做的原因是为了避免来自我的模型的循环引用以及利用数据注释等。我最近切换到Generic Repository 模式和unit of work,但我似乎不再能够使用 Automapper 的.ProjectTo

这是我的代码,它由 KendoUI MVC Grid 调用,它返回一个数据列表(具有关系,因此具有循环引用)。

public ActionResult GetItems([DataSourceRequest] DataSourceRequest request)
{
    var item = unitOfWork.ItemRepository.Get();
    var result = item.ToDataSourceResult(request);
    return Json(result);
}

为了绕过循环引用,我使用了一个视图模型,这也让我可以对我的数据进行额外的控制。我发现它不允许我使用项目。

public ActionResult GetItems([DataSourceRequest] DataSourceRequest request)
{
    var item = unitOfWork.ItemRepository.Get().ProjectTo<ItemViewModel>;
    var result = item.ToDataSourceResult(request);
    return Json(result, JsonRequestBehavior.AllowGet);
}

Intellisense 返回错误:

无法将方法组分配给隐式类型变量

出了什么问题,有没有其他方法可以做到这一点?

【问题讨论】:

    标签: c# asp.net-mvc kendo-ui repository-pattern circular-reference


    【解决方案1】:

    我认为您只是在 ProjectTo&lt;&gt;() 调用末尾缺少括号:

    var item = unitOfWork.ItemRepository.Get().ProjectTo<ItemViewModel>();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-10-28
      • 2015-09-05
      • 2016-11-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多