我正在开发一个带有 WCF 后端的 ASP.NET MVC 4.5 应用程序,其中实体框架 5 用作数据访问。PictureUse是实体,PictureUsageContract是通过WCF传输的DataContract。
Repository.GetAll 是一个标准的通用获取所有对象,用于从对象上下文中获取实体。
var allPictureUses = _pictureUseRepository.GetAll()
.Where(x => x.Name != null)
.Include(x => x.PictureUse1)
.Select(x => new PictureUsageContract()
{
ID = x.ID,
DefaultPrice = x.DefaultPrice,
Name = x.Name,
UseDescription = x.UseDescription,
SubItemList = x.PictureUse1.Select(c => c.UseDescription).ToList()
}).ToList();
调试时收到异常:{"LINQ to Entities 无法识别方法 'System.Collections.Generic.List 1[System.String] ToList[String](System.Collections.Generic.IEnumerable
1[System.String])' 方法,并且此方法无法转换为存储表达式。"}
我知道它是以下行:
SubItemList = x.PictureUse1.Select(c => c.UseDescription).ToList()
SubItemList 是一个列表 PictureUse 是一个实体。
我事先搜索了一下,知道可能是 .Select 没有得到 LINQ to Entities 的正确支持,但我还没有找到任何具体的解决方案。
欢迎任何帮助。