私は他の子のコレクションを持っているそのうちの一つ2機種、持っている:Entity Frameworkの遅延ロードされたコレクションが時々ヌル
var parent = _dbContext.Parents.FirstOrDefault(p => p.Id == parentId);
:このコードは、ウィジェットの> 99%のために働く
[Table("ParentTable")]
public class Parent
{
[Key, Column("Parent")]
public string Id { get; set; }
[Column("ParentName")]
public string Name { get; set; }
public virtual ICollection<Widget> Widgets { get; set; }
}
[Table("WidgetTable")]
public class Widget
{
public string Year { get; set; }
[Column("Parent")]
public string ParentId { get; set; }
public string Comments { get; set; }
[Key, Column("ID_Widget")]
public int Id { get; set; }
[ForeignKey("ParentId"), JsonIgnore]
public virtual Parent Parent { get; set; }
}
を通常、parent.Widgets
は複数のアイテムを含むコレクションです。ただし、いくつかの例では、parent.Widgets
はnullです(アイテムのないコレクションではありません)。
私は、クエリアナライザーを使用して、親のクエリーと、その親に属するウィジェットのクエリーの両方をトレースしました。どちらも、私が期待する行を正確に返します。ただし、1つまたは2つの親IDのモデルでは、Widgetsコレクションの値はnullになります。一部のインスタンスでは遅延ロードされたコレクションがnullになる可能性がありますが、他のインスタンスではnullになる可能性はありますか?
'parent.Widgets'はnullで、' parent'ではないと確信していますか? – mjwills
@mjwills:はい、クイックウォッチを使って確認しました。 – Andy
私は理解できません...ウィジェットを持たない一部の親は空のコレクションを返しますが、ウィジェットを持たない他の親もnullを返すと言っていますか?または、ウィジェットを持たないすべての親がnullを返すのでしょうか? –