Bagaimana cara menerima data lengkap melalui kueri kerangka entitas

pemrograman


Saya memiliki dua tabel dalam database yang ingin saya gabungkan dan bekerja dengan data itu.

Jadi saya menggunakan cuplikan kode itu:

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();

Tabel databasenya sendiri memiliki 31.966.037 entri.
Saat melakukan debug (langsung setelah eksekusi kode) saya memulai iEnumeration Viewer dan melihat konteks. Alamat dan melakukan ekspor csv. Ada 995.101 entri dalam daftar itu. Jadi pada waktu eksekusi saya tidak memiliki semua entri dari tabel utama untuk digunakan.

Mungkin ada yang tahu, bagaimana cara memperbaikinya?

Apa yang saya coba:

Memeriksa IEnumeration Viewer dan csv checkout
Periksa kembali tabel database
Baca dokumen tentang Entity Framework dan Hal SQL lainnya.

Solusi 1

Anda sedang melakukan INNER JOIN – Anda hanya akan mendapatkan kembali hasil dari Addresses tabel yang memiliki catatan terkait di ExtraData meja.

Jika Anda ingin semua catatan dari Addresses tabel, meskipun mereka tidak memiliki catatan terkait di dalamnya ExtraTablemaka Anda perlu melakukan a LEFT JOIN.

Lakukan gabungan luar kiri (LINQ dalam C#) – C# | Microsoft Belajar[^]

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をコピーしました