C# - Linq:无法创建类型的常量值在此上下文中仅支持基本类型或枚举类型.

Mil*_*lad 2 c# linq entity-framework entity-framework-6

我正在使用此linq查询进行登录

var login = context.Person_Login
                   .Where(c => c.Username == username && c.Password == password)
                   .DefaultIfEmpty(new Person_Login({Id = -1})
                   .First();
Run Code Online (Sandbox Code Playgroud)

但在执行中抛出此异常:

EntityFramework.SqlServer.dll中出现未处理的"System.NotSupportedException"类型异常

附加信息:无法创建"MyProject.MyModels.Person_Login"类型的常量值.在此上下文中仅支持基元类型或枚举类型.

Iva*_*oev 7

异常消息非常具有描述性.

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};
Run Code Online (Sandbox Code Playgroud)

注意,该DefaultIfEmpty方法主要用于执行LINQ左外连接.