![](/img/trans.png)
[英]Unable to create a constant value of type 'Anonymous type'. Only primitive types or enumeration types are supported in this context. in Linq C#
[英]C# - Linq : Unable to create a constant value of type Only primitive types or enumeration types are supported in this context.
我正在使用此linq查询进行登录
var login = context.Person_Login
.Where(c => c.Username == username && c.Password == password)
.DefaultIfEmpty(new Person_Login({Id = -1})
.First();
但在执行中抛出此异常:
EntityFramework.SqlServer.dll中出现未处理的“System.NotSupportedException”类型异常
附加信息:无法创建“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});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.