【解決方法】エンティティ フレームワーク クエリを介して完全なデータを受信するにはどうすればよいですか

プログラミングQA


データベース内に 2 つのテーブルがあり、そのデータを結合して操作したいと考えています。

そこで私はそのコードスニペットを使用しました:

C#
var listOfFoundRespIds = (from a in context.Adresses
						  join e in context.ExtraData
							  on a.LFD equals e.lfd
						  where a.PROJID == 2048
						  select new
						  {
							  RESPID = e.str03,
							  LFD = e.lfd,
							  PROJID = a.PROJID
						  })
						  .ToList();

データベース テーブル自体には 31.966.037 のエントリがあります。
デバッグ中(コード実行直後)、iEnumeration Viewerを起動してcontext.Adressesを調べ、csvエクスポートを実行しました。 そのリストには 995.101 個のエントリがありました。 したがって、実行時には、メインテーブルのすべてのエントリを操作できるわけではありません。

おそらく誰かが修正方法を知っていますか?

私が試したこと:

IEnumeration Viewer と CSV チェックアウトを確認しました
データベーステーブルを再確認してください
Entity Framework やその他の SQL に関するドキュメントを読んでください。

解決策 1

あなたは、 INNER JOIN – からの結果のみが返されます。 Addresses に対応するレコードがあるテーブル ExtraData テーブル。

すべてのレコードが必要な場合は、 Addresses テーブル内に対応するレコードがない場合でも、 ExtraTable、その後、次のことを実行する必要があります。 LEFT JOIN

左外部結合を実行する (C# の LINQ) – C# | Microsoft Learn[^]

C#
from a in context.Adresses
join ed in context.ExtraData on a.LFD equals e.lfd into edg
from e in ed.DefaultIfEmpty()
where a.PROJID == 2048
select new
{
    RESPID = e.str03,
    LFD = e.lfd,
    PROJID = a.PROJID
}

コメント

タイトルとURLをコピーしました