我正在将一个实体对象转换为一个模型,该模型可以在我的应用程序中传递而不需要额外的开销(以及为视图生成一些额外的字段等。
public IEnumerable<PageModel> GetAllPages()
{
var AllPageO = _session.All<Page>();
IList<PageModel> RetO = new List<PageModel>();
foreach (var AP in AllPageO)
{
RetO.Add(new PageModel(AP));
}
return RetO.AsEnumerable();
}
这可以转换为Linq查询,下面的工作我得到了错误
>'/'应用程序中的服务器错误。只要 无参数构造函数和 LINQ支持初始化程序 实体。
public IEnumerable<PageModel> GetAllPages()
{
var AllPageO = _session.All<Page>();
var RetO = from EntityO in AllPageO select new PageModel(EntityO);
return RetO;
}
Resharper实际上将firt循环转换为此循环,也会因同样的错误而失败。
IList<PageModel> RetO = PageO.Select(AP => new PageModel(AP)).ToList();
答案 0 :(得分:3)
这是因为实体框架正在尝试将您的投影表达式转换为sql。
简单的解决方法是在投影前枚举结果:
var RetO = from EntityO in AllPageO.ToList() select new PageModel(EntityO);