请问"在 LINQ to Entities 查询中无法构造实体或复杂类型"错误解决方法

我的linq语句如下:

public IEnumerable<Models.Projects.Projects> GetList(Func<Models.Projects.Projects, bool> filter)
{
var query = (from t in Db.Projects
select new Models.Projects.Projects
{
ID = t.ID,
ItemCode = t.ItemCode,
ItemName = t.ItemName,
PItemCode = t.PItemCode,
CID = t.CID,
Responsible = t.Responsible,
PlanBeginDate = t.PlanBeginDate,
PlanEndDate = t.PlanEndDate,
ActualBeginDate = t.ActualBeginDate,
ActualEndDate = t.ActualEndDate,
Remark = t.Remark,
Creator = t.Creator,
CreateDate = t.CreateDate,
Version = t.Version,
Progress = (
from t0 in Db.Projects_Progress
where t0.ItemCode == t.ItemCode
select new
{
t0.Progress
}).Sum(p => p.Progress)
});

return query;
}

运行的时候就提示:
在 LINQ to Entities 查询中无法构造实体或复杂类型“PJM.Component.Data.Projects”。
请问大家这个问题要怎么解决呢?
...全文
490 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
宝_爸 2014-08-08
  • 打赏
  • 举报
回复
没看到哪里用到PJM.Component.Data.Projects这个类型了啊。
Ny-6000 2014-08-08
  • 打赏
  • 举报
回复
直接写sql语句执行吧. 最简单,最方便.
烟波钓 2014-08-08
  • 打赏
  • 举报
回复
引用 6 楼 wggfcusmq 的回复:
我在网上看到有人说 from t in Db.Projects select new Models.Projects.Projects 这里原select 只能new匿名对象,不能是具体的实体对象,是这个原因吗?
是,要保证EF认识你查询出来的类型,个人经验,EF查询时仅支持表结构生成的映射实体对象,和简单的C#类型,要直接返回个人新定义的类型,需用匿名类型进行转化

from t in Db.Projects
                         select new 
                         {
                             T=t,
                         }
ToList 之后即真正计算之后,再转化为其他类型
  • 打赏
  • 举报
回复
我在网上看到有人说 from t in Db.Projects select new Models.Projects.Projects 这里原select 只能new匿名对象,不能是具体的实体对象,是这个原因吗?
  • 打赏
  • 举报
回复
引用 2 楼 findcaiyzh 的回复:
没看到哪里用到PJM.Component.Data.Projects这个类型了啊。
public DbSet<PJM.Core.Models.Projects.Projects> Projects { get; set; } PJM.Component.Data.Projects就是上面的定义了.. 在问题中就是Db.Projects了。。
  • 打赏
  • 举报
回复
引用 2 楼 findcaiyzh 的回复:
没看到哪里用到PJM.Component.Data.Projects这个类型了啊。
就是
q107770540 2014-08-08
  • 打赏
  • 举报
回复
没看到你的代码在哪里和PJM.Component.Data.Projects有关系

8,497

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 LINQ
社区管理员
  • LINQ
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧