小编Ben*_*ing的帖子

任何ToList()的EF6 NullReferenceException

使用C#,.NET 4.5.2,Entity Framework 6.1.3和System.Linq我遇到了一个令人困惑的异常.异常本身似乎没有包含有用的信息来确定它被提出的原因.

执行时的以下代码行导致NullReferenceException: dbCtx.Customers.ToList();

但是,以下行无例外地运行并返回正确的结果: (dbCtx.Customers).ToList();

首先运行括号括起的表达式将允许两个表单无异常地执行:

var result1 = (dbCtx.Customers).ToList();
var result2 = dbCtx.Customers.ToList();
Run Code Online (Sandbox Code Playgroud)

我还要注意添加实体按预期工作:

dbCtx.Customers.Add(new Customer() { Enabled = true, Name = "Test" });
Run Code Online (Sandbox Code Playgroud)

客户实体类:

public sealed class Customer : BaseEntity
{
    public bool Enabled { get; set; }

    [Required]
    public string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

BaseEntity类:

public abstract class BaseEntity
{
    [Key]
    [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
    public int Id { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

DbContext类:

public class MyDbContext : DbContext
{
    public MyDbContext() : base(@"Server=.\SQLExpress;Database=MyDatabase;Trusted_Connection=Yes;")
    { …
Run Code Online (Sandbox Code Playgroud)

c# nullreferenceexception entity-framework-6

7
推荐指数
1
解决办法
836
查看次数