Quindi, ecco lo scenario: ho una serie di classi di repository diverse che ognuna può utilizzare un contesto di dati isolato o un contesto condiviso. Nei casi in cui viene utilizzato un contesto isolato, voglio aggiungere un metodo alla classe base che mi consenta di specificare il lambda come parametro, fare in modo che quell'espressione sia eseguita dal contesto isolato del repository scelto e restituire un risultato IQueryable . Come apparirebbe la firma del metodo e come passare l'espressione al contesto?LINQ: passaggio dell'espressione lambda come parametro da eseguire e restituito con il metodo
Ho bisogno che la soluzione sia il più generica possibile di qualsiasi oggetto/tabella modello possibile.
Qui è fondamentalmente quello che sto cercando di fare:
IAssetRepository repo = new AssetRepository(true); // true indicates isolated context
var results = repo.ExecuteInContext<SomeType>(SomeTable.Where(x =>
x.SomeProp.Equals(SomeValue)));
Quando si cerca il tuo primo suggerimento, ottengo un errore nella compilazione della tabella t = GetTable (); linea: T deve essere un tipo di riferimento per poterlo utilizzare come parametro –
, ho capito. necessario aggiungere "where T: class" alla fine della dichiarazione del metodo. –
Scusa, sono stato bloccato al lavoro :) – leppie