Sto utilizzando Entity Framework 4.3.1 con un approccio Code First. Inoltre, sto usando LinqKit per usare PredicateBuilder.Codice quadro entità Primo 4.3/predicato LINQKit per la tabella correlata
Se ho le tabelle in questo modo:
posizione, il fuso orario (Many: 1)
..e vorrei avere qualcosa in questo modo:
Expression<Func<TimeZone, bool>> pred = PredicateBuilder.True<TimeZone>();
pred = pred.And(tz => tz.TimeZoneCode == "EST");
List<Location> locations = context.Locations
.AsExpandable().Where(pred)
.Select(loc => loc).ToList();
Questo non funziona, perché il predicato è costruito per accettare un fuso orario, ma il metodo Where() riceve una posizione.
posso riscrivere il predicato in questo modo, ma io non voglio, perché voglio avere una fabbrica predicato che crea predicati per tipi specifici (io non voglio usare le proprietà Navigator in questo modo):
Quale sintassi è possibile utilizzare (se presente) per utilizzare il predicato come costruito nel primo esempio, dove prende un TimeZone, piuttosto che farlo prendere una posizione e percorrere l'albero tramite le proprietà di navigazione (poiché questo è meno riutilizzabile). Sarebbe bello se ci fosse un modo per sfruttare la conoscenza che EF ha delle proprietà di navigazione, in primo luogo, ed essere in grado di utilizzare un predicato per il tipo di proprietà di navigazione.
grazie per l'aggiornamento! Puoi aggiungere informazioni sul fatto che questo predicato sia applicato sul lato server, tramite LINQ/LINQKit che alimenta EF qualcosa che può tradurre in SQL, oppure questa forza bruta applicata internamente in EF su un set di dati non filtrato? –
@PittsburghDBA si ottiene una chiamata al DB tramite EF, che si traduce in SQL. – Grinn
Grazie per questo straordinario seguito !!!!! –