Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# &引用;对象引用未设置为对象的实例;论导航属性_C#_Asp.net_Entity Framework_Models_Nullreferenceexception - Fatal编程技术网

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; }

}