Comment puis-je recevoir les données complètes via une requête de structure d’entité

la programmation


J’ai deux tables dans une base de données que je veux combiner et travailler avec ces données.

J’ai donc utilisé cet extrait de code :

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

La table de base de données elle-même contient 31 966 037 entrées.
Pendant le débogage (directement après l’exécution du code), j’ai démarré iEnumeration Viewer, j’ai examiné les context.Adresses et j’ai effectué une exportation CSV. Il y avait 995 101 entrées dans cette liste. Donc, au moment de l’exécution, je n’ai pas toutes les entrées de la table principale pour travailler avec.

Peut-être que quelqu’un a une idée sur comment réparer ?

Ce que j’ai essayé :

Vérification de la visionneuse IEnumeration et de l’extraction CSV
Vérifiez la table de base de données
Lisez la documentation sur Entity Framework et d’autres éléments SQL.

Solution 1

Vous effectuez un INNER JOIN – vous ne recevrez que les résultats du Addresses table qui ont un enregistrement correspondant dans le ExtraData tableau.

Si vous voulez tous les enregistrements du Addresses table, même s’ils n’ont pas d’enregistrement correspondant dans la ExtraTablealors vous devez effectuer un LEFT JOIN.

Effectuer des jointures externes gauches (LINQ en C#) – C# | Microsoft Apprendre[^]

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