Oto scenariusz: mam serię różnych klas repozytoriów, z których każdy może korzystać z izolowanego kontekstu danych lub z udostępnionego kontekstu. W przypadkach, w których używany jest izolowany kontekst, chcę dodać metodę do klasy bazowej, która pozwoli mi określić lambdę jako parametr, aby to wyrażenie było wykonywane przez izolowany kontekst wybranego repozytorium i zwracało wynik IQueryable . Jak wyglądałby podpis metody i jak przekazywać wyrażenie do kontekstu?LINQ: przekazywanie wyrażenia lambda jako parametru do wykonania i zwracanego przez metodę
Potrzebuję, aby rozwiązanie było możliwie jak najbardziej ogólne, ponieważ można użyć dowolnego możliwego obiektu/stołu modelowego.
Tutaj jest po prostu to, czego szukam zrobić:
IAssetRepository repo = new AssetRepository(true); // true indicates isolated context
var results = repo.ExecuteInContext<SomeType>(SomeTable.Where(x =>
x.SomeProp.Equals(SomeValue)));
Gdy próbuje swoją pierwszą sugestię, pojawia się błąd w kompilacji Tabela t = pomniane przeżycie (); linia: T musi być typem odniesienia, aby użyć go jako parametru –
nevermind, mam go. konieczne jest dodanie "where T: class" na końcu deklaracji metody. –
Przepraszam, zostałem powiesił się w pracy :) – leppie