如何在通用存储库中使用自动映射投影以避免循环引用?

时间:2018-04-20 15:01:34

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

我在我的MVC应用程序中使用通用存储库,我还使用了者自动传感器来在viewmodel之间进行映射。我需要这个的原因是为了避免我的模型的循环引用,也利用数据注释等。我已经重新开始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);
}

为了解决循环引用,我使用了一个viewmodel,这也让我可以对我的数据进行额外的控制。我发现它不会让我使用项目。

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

Intellisense返回错误:

  

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

出了什么问题,还有另外一种方法吗?

1 个答案:

答案 0 :(得分:1)

我认为你只是在ProjectTo<>()电话结束时缺少括号:

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