C# &引用;对象引用未设置为对象的实例;论导航属性
我有以下代码:C# &引用;对象引用未设置为对象的实例;论导航属性,c#,asp.net,entity-framework,models,nullreferenceexception,C#,Asp.net,Entity Framework,Models,Nullreferenceexception,我有以下代码: IQueryable<Dealer> dealers = db.Dealers.Include(x => x.Statuses); this.view.Table = dealers .Select(x => new DealerRow { Id = x.Id, LastStatus = x.Statuses.FirstOrDefault() }) .ToList(); 具体地说,如果我从选
IQueryable<Dealer> dealers = db.Dealers.Include(x => x.Statuses);
this.view.Table = dealers
.Select(x => new DealerRow
{
Id = x.Id,
LastStatus = x.Statuses.FirstOrDefault()
})
.ToList();
具体地说,如果我从选择中注释掉LastStatus
,程序将编译并运行得非常完美。所以我假设状态
是这里的问题
一对多关系的设置如下:
[Table("dealers")]
public class Dealer
{
public Dealer()
{
Statuses = new List<DealerStatus>();
}
[Key]
[Column("id")]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
public virtual ICollection<DealerStatus> Statuses { get; set; }
}
我已经阅读了关于它的其他5个问题。我试着打电话给Include和类似的人。我还检查了Dealer的默认构造函数是否初始化了空列表
导致此异常的原因是什么?在尝试从集合中删除
virtual
和其他类型的紧急加载后,我将Select
移动到ToList
调用之后(该调用将紧急加载所有内容),但至少它会编译并运行
更新到最新的6.9.9 MySql.Data.Entity对我也不起作用。在尝试从集合中删除
virtual
和其他类型的急切加载后,我在ToList
调用之后移动了Select
(它将急切地加载所有内容),但至少它会编译并运行
更新到最新的6.9.9 MySql.Data.Entity对我也不起作用。如果将第一行更改为db.derals.Include(x=>x.Statuses.ToList();,是否也会发生这种情况@Fabiano在任何其他内容之前添加行“db.deralers.Include(x=>x.Statuses).ToList();”,不会触发异常。这可能是因为密钥属性不是DealerId,而是Id?以下是我所看到的唯一区别。似乎不是这样。只是尝试将它们命名为DealerId和DealerStatusId,但出现了相同的异常。最好包含完整堆栈跟踪。如果将第一行更改为db.deralers.include(x=>x.Statuses).ToList();,是否也会发生这种情况@Fabiano在任何其他内容之前添加行“db.deralers.Include(x=>x.Statuses).ToList();”,不会触发异常。这可能是因为密钥属性不是DealerId,而是Id?以下是我所看到的唯一区别。似乎不是这样。只是尝试将它们命名为DealerId和DealerStatusId,出现了相同的异常。最好包含完整堆栈跟踪。
[Table("dealers")]
public class Dealer
{
public Dealer()
{
Statuses = new List<DealerStatus>();
}
[Key]
[Column("id")]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
public virtual ICollection<DealerStatus> Statuses { get; set; }
}
[Table("dealer_statuses")]
public class DealerStatus
{
[Key]
[Column("id")]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
[Required]
[ForeignKey("Dealer")]
[Column("id_dealer")]
public int DealerId { get; set; }
public virtual Dealer Dealer { get; set; }
[Required]
[Column("note")]
public string Note { get; set; }
}