J'ai une entité A
avec une propriété de navigation simple B
. Pour toute instance de A
, nous attendons plusieurs milliers d'instances connexes de B
.EF construit EntityCollection, mais je (crois que je) veux IQueryable
Il n'y a pas de cas où j'appelle quelque chose comme:
foreach(var x in A.B) { ... }
Au lieu de cela, je suis que intéressés à faire des opérations globales, telles que
var statY = A.B.Where(o => o.Property == "Y");
var statZ = A.B.Where(o => o.CreateDate > DateTime.Now.AddDays(-1));
Pour autant que je peux dire, EF instancie des milliers de références à B et effectue ces opérations en mémoire. Cela est dû au fait que les propriétés de navigation utilisent EntityCollection. Au lieu de cela, je voudrais qu'il effectue ces requêtes au niveau SQL si possible.
Mon intuition actuelle est que Propriétés de navigation peut-être pas la bonne façon de procéder. Je ne suis pas attaché à EF, donc je suis ouvert à d'autres approches. Mais je serais très intéressé de savoir la bonne façon de le faire sous EF si possible.
(j'utilise EF4.)
Est-ce que ce travail va quand A.Where (a => a.B.CreateSourceQuery() Tout (o => o.Property == "Y").); ou est-ce que linq JOIN est recommandé dans ce cas? –