EF查询报错 “The LINQ expression node type ‘Invoke’ is not supported in LINQ to Entities.” 执行语句:
Func fun = (u) => {
return !u.IS_Delete && u.Account.Equals(account);
};
using(AuthDBContext context = new AuthDBContext())
{
return context.Set().Where(u=> fun(u)).FirstOrDefault();
}
【C#|EF查询报错问题】执行后报错:
文章图片
在执行查询时,无法将linq to entity语句翻译成SQL语句,改成下面这种方式,执行成功。
using(AuthDBContext context = new AuthDBContext())
{
return context.Set().AsEnumerable().Where(u=> fun(u)).FirstOrDefault();
}
这种是将所有的数据全部查询出来,加载到内存中,然后使用linq to entity筛选。生成的SQL语句为:
文章图片
而下面这种方式则会在SQL中增加where条件。
using(AuthDBContext context = new AuthDBContext())
{
return context.Set().Where(u=> u.Account=="Admin").FirstOrDefault();
}
执行成功,执行的SQL语句为:
文章图片
推荐阅读
- C#|C# 文件路径操作
- C# 接口实例
- C#|10、接口、抽象、密封、开放封闭原则
- c#|11、C#处理程序异常的技术
- C#|九、C#结构 类 属性
- Asp.net|System.Globalization.DateTimeFormatInfo.InvariantInfo
- C#|c# HashtableTo Json 字符串 HashtableToWxJson
- 分表分库(百亿级大数据存储)
- C#|微信小程序开发系列(六)——“处理请求时出错”怎么处理()
- c#做的一个简单的包含实时进度的进度条