C#-Linq:无法创建类型为的常量值在此上下文中仅支持基元类型或枚举类型
本文关键字:类型 支持 上下文 枚举 创建 C#-Linq 常量 | 更新日期: 2023-09-27 18:27:40
我正在使用此linq查询登录
var login = context.Person_Login
.Where(c => c.Username == username && c.Password == password)
.DefaultIfEmpty(new Person_Login({Id = -1})
.First();
但在执行中抛出此异常:
发生类型为"System.NotSupportedException"的未经处理的异常在EntityFramework.SqlServer.dll 中
附加信息:无法创建类型为的常数值"MyProject.MyModels.Person_Login"。仅基元类型或枚举在此上下文中支持类型。
异常消息非常具有描述性。
DefaultIfEmpty(new Person_Login({Id = -1})
在Linq to Entities中不支持。
您可以使用以下
var login = context.Person_Login
.FirstOrDefault(c => c.Username == username && c.Password == password)
?? new Person_Login {Id = -1};
注意,DefaultIfEmpty
方法主要用于执行LINQ左外联接。
尝试
var login = context.Person_Login
.Where(c => c.Username == username &&
c.Password ==password)
.FirstOrDefault();
login = (login != null) ? login : (new Person_Login({Id = -1}));
尝试
var login = context.Person_Login
.Where(c => c.Username == username && c.Password == password)
.FirstOrDefault(new Person_Login({Id = -1});
var login = context.Person_Login
.Any(c => c.Username == username && c.Password == password) ?
context.Person_Login.First(c => c.Username == username && c.Password == password) :
new Person_Login({Id = -1});