我正在使用此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&#39 ;.只有原始类型或枚举 在这种情况下支持类型。
答案 0 :(得分:7)
异常消息非常具有描述性。
DefaultIfEmpty(new Person_Login({Id = -1})
。
您可以使用以下代码
var login = context.Person_Login
.FirstOrDefault(c => c.Username == username && c.Password == password)
?? new Person_Login {Id = -1};
请注意,DefaultIfEmpty
方法主要用于执行LINQ左外连接。
答案 1 :(得分:1)
尝试
var login = context.Person_Login
.Where(c => c.Username == username &&
c.Password ==password)
.FirstOrDefault();
login = (login != null) ? login : (new Person_Login({Id = -1}));
答案 2 :(得分:0)
尝试
var login = context.Person_Login
.Where(c => c.Username == username && c.Password == password)
.FirstOrDefault(new Person_Login({Id = -1});
答案 3 :(得分:0)
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});