[英]C# - Linq : Unable to create a constant value of type Only primitive types or enumeration types are supported in this context.
I am using this linq query for login 我正在使用此linq查询进行登录
var login = context.Person_Login
.Where(c => c.Username == username && c.Password == password)
.DefaultIfEmpty(new Person_Login({Id = -1})
.First();
but in execution throw this exception: 但在执行中抛出此异常:
An unhandled exception of type 'System.NotSupportedException' occurred in EntityFramework.SqlServer.dll
EntityFramework.SqlServer.dll中出现未处理的“System.NotSupportedException”类型异常
Additional information: Unable to create a constant value of type 'MyProject.MyModels.Person_Login'.
附加信息:无法创建“MyProject.MyModels.Person_Login”类型的常量值。 Only primitive types or enumeration types are supported in this context.
在此上下文中仅支持基元类型或枚举类型。
The exception message is quite descriptive. 异常消息非常具有描述性。
DefaultIfEmpty(new Person_Login({Id = -1})
is not supported in Linq to Entities. Linq to Entities不支持。
You can use the following instead 您可以使用以下代码
var login = context.Person_Login
.FirstOrDefault(c => c.Username == username && c.Password == password)
?? new Person_Login {Id = -1};
Note that DefaultIfEmpty
method is used mainly for performing LINQ left outer joins. 请注意,
DefaultIfEmpty
方法主要用于执行LINQ左外连接。
try 尝试
var login = context.Person_Login
.Where(c => c.Username == username &&
c.Password ==password)
.FirstOrDefault();
login = (login != null) ? login : (new Person_Login({Id = -1}));
Try 尝试
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});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.