Entity Frameowrk 7を使用していて、データ転送オブジェクト(DTO)にデータを選択するためのLINQクエリがあります。ナビゲーションプロパティからデータを選択するには、Include
を使用して、指定されたプロパティを熱心に読み込むことができます。テーブルには、現在2つの行を持っていますが、そのうちの一つだけが、次のクエリに応答して返されます。LINQナビゲーションプロパティがnullの場合、行をスキップします。
var jobs = context.CorepJobs
.Include(j => j.CompanyNavigation)
.Include(j => j.WellNavigation.FieldNavigation)
.Select(j =>
new CorepJobDTO()
{
Id = j.Id,
Created = j.Created,
DepthAsFeet = j.DepthAsFeet,
JobType = j.JobType,
State = j.State,
ProjectNo = j.ProjectNo,
CompanyName = j.CompanyNavigation.CompanyName,
WellName = j.WellNavigation.Name,
FieldName = j.WellNavigation.FieldNavigation.Name
}
).AsEnumerable();
いくつかのプロパティがnull
をしている場合、私はクエリがnull
とDTOの対応するプロパティを設定するために期待されます。その代わりに、FieldNavigation
プロパティがnull
の場合、行全体がスキップされ、2つの行のうちの1つのみが返されます。 Select
ブロックの最後のプロパティ(FieldName
)を削除すると、両方の行が返されます。
私はまた、任意の運なし
FieldName = j.WellNavigation.FieldNavigation != null =? j.WellNavigation.FieldNavigation.Name : ""
を試してみました。
私が間違っている可能性のあるアイデアはありますか?
https://github.com/aspnet/EntityFramework/issues/3186 –
ニースが見つかりました!そうでなければならない。 –