LINQ to Entities不支持指定的类型成员“Name“。仅支持初始值设定项,实体成员和实体导航属性

问题:使用Linq 查询时增加了一个条件【query.where(q=>q.Name == "张三");】就开始报这个错。

开始以为是EF与数据库字段属性映射有问题导致的,将该表在模型中删除再重新添加还是一样的错误。

原因:因为Linq查询时使用了未映射到Where表达式中的数据库列的属性及Name,就是说Name属性在执行Linq的过程中没有与数据库中的Name字段建立联系。

可以打断点看一下query中报错字段的值

public class PaperArchivesModel
{
        public int PAID { get; set; }
        public string PersID { get; set; }
        public string IDCard { get; set; }
        public string DeptID { get; set; }
        public string Name{ get; set; }
} 
//修改前,select中没有后面查询要用到的Name字段
var query = from paper in db.DA_PaperArchives
            join p in db.DA_PersBasicInfo on paper.PersID equals p.PersID
            join dept in db.DA_Department on p.DeptID equals dept.DeptID
            select new PaperArchivesModel
            {
                PAID = paper.PAID,
                PersID = paper.PersID,
                IDCard = p.A0184,
                DeptID = p.DeptID,
                DeptName = dept.DeptName
            };
query = query.where(q=>q.Name == "张三");//异常

解决:在select 时将where条件内容的字段加上,代码如图:

public class PaperArchivesModel
{
        public int PAID { get; set; }
        public string PersID { get; set; }
        public string IDCard { get; set; }
        public string DeptID { get; set; }
        public string Name{ get; set; }
} 
//修改后
var query = from paper in db.DA_PaperArchives
            join p in db.DA_PersBasicInfo on paper.PersID equals p.PersID
            join dept in db.DA_Department on p.DeptID equals dept.DeptID
            select new PaperArchivesModel
            {
                PAID = paper.PAID,
                PersID = paper.PersID,
                IDCard = p.A0184,
                DeptID = p.DeptID,
                DeptName = dept.DeptName,
                Name = p.Name    //修改处,加上Name字段
            };
query = query.where(q=>q.Name == "张三");//成功

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值