特定の条件で、ThenIncludeメソッドで指定する、コンテキストのプロパティがVisual Studioのインテリセンスに表示されないことがあったので、検証してみました。
結論
ThenInclude(colection => corection.×××)のように、コレクションの関連データを読み込もうとするとインテリセンスに表示されません。インテリセンスのバグだそうです。
対策
インテリセンスに頼らず手動で指定する。
検証
使用するモデル(必要な個所だけ抜粋)
public class User
{
public int UserId { get; set; }
public string UserName { get; set; }
public List<Books> UserBooks { get; set; }
}
public class Books
{
public int UserId { get; set; }
public int CategoryId { get; set; }
public string Title { get; set; }
public List<BookCategory> BookCategories { get; set; }
}
public class BookCategory
{
public int CategoryId { get; set; }
public int CategoryName { get; set; }
}
ThenIncludeでコレクションの関連データを読み込む
本来はここでBooksクラスの関連データのプロパティである「BookCategories」がインテリセンスに出てきてほしいが、出てこない。
出てこないが、直接プロパティを打ち込めばエラーなく読み込むことができる。
上記画像のようにプロパティ名を指定してから「userBooks.」まで消して、プロパティ名を打つとなぜか表示される
なぜかインテリセンスに出てくるが、一回全部消してからもう一回打つと出てこなくなる。
インテリセンスに出てこないからThenInclude使えないわーと思ってたけど、実は使えるんです。
参考