Así que aquí está el escenario: tengo una serie de diferentes clases de repositorio que pueden usar un contexto de datos aislado o un contexto compartido. En los casos en que se utiliza un contexto aislado, quiero agregar un método a la clase base que me permita especificar el lambda como parámetro, hacer que esa expresión sea ejecutada por el contexto aislado del repositorio elegido y devolver un resultado IQueryable . ¿Cómo se vería la firma del método y cómo pasar la expresión al contexto?LINQ: pasando la expresión lambda como parámetro para ser ejecutado y devuelto por el método
Necesito que la solución sea lo más genérica posible ya que podría usarse cualquier objeto/tabla posible.
Aquí es básicamente lo que estoy buscando hacer:
IAssetRepository repo = new AssetRepository(true); // true indicates isolated context
var results = repo.ExecuteInContext<SomeType>(SomeTable.Where(x =>
x.SomeProp.Equals(SomeValue)));
Cuando se trata de su primera sugerencia, me sale un error en la compilación de la tabla t = GetTable (); línea: T debe ser un tipo de referencia para usarlo como parámetro –
No importa, lo tengo. necesario agregar "donde T: clase" al final de la declaración del método. –
Disculpe, se colgó en el trabajo :) – leppie