使用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)