Tengo una entidad A
con una propiedad de navegación simple B
. Para cualquier instancia determinada de A
, esperamos varias miles de instancias relacionadas de B
.EF crea EntityCollection, pero yo (creo que) quiero IQueryable
No hay ningún caso en el que llamo algo como:
foreach(var x in A.B) { ... }
En cambio, estoy solamente interesado en hacer operaciones de agregados tales como
var statY = A.B.Where(o => o.Property == "Y");
var statZ = A.B.Where(o => o.CreateDate > DateTime.Now.AddDays(-1));
Por lo que yo puedo decir, EF instancia miles de referencias a B y realiza estas operaciones en la memoria. Esto se debe a que las propiedades de navegación usan EntityCollection. En cambio, me gustaría que realice estas consultas en el nivel de SQL si es posible.
Mi presentimiento actual es que las Propiedades de navegación pueden no ser el camino correcto. No estoy apegado a EF, entonces estoy abierto a otros enfoques. Pero estaría muy interesado en saber la forma correcta de hacerlo en EF si es posible.
(estoy usando EF4.)
Funcionaría esto al ir a A.Where (a => a.B.CreateSourceQuery(). Any (o => o.Property == "Y")); o es un LINQ JOIN recomendado en este caso? –