¿Puedo especificar un conjunto de parámetros básicos para un DataContext de Linq a sql?
-
07-07-2019 - |
Pregunta
Tengo un DataContext LINQ-to-SQL que representa una relación padre-hijo de Productos a Precios. Estoy iterando a través de una lista de productos y recuperando los precios de cada uno. El problema es que las tablas detrás de los Productos y los Precios contienen una lista de Productos o Precios para entornos múltiples, determinada por una clave compleja de 3 campos. Quiero recuperar los Productos y Precios para solo uno de esos entornos.
Puedo hacer esto especificando una cláusula where larga en cada consulta LINQ que consiste en la clave del producto y la clave del entorno complejo, algo como esto:
var price = ( from condition in conditiontype where condition.MaterialNumber == material && condition.Client == "400" && condition.SalesOrg == "1000" && condition.DistributionChannel == "10" select condition.ConditionDetails[0].ConditionValue );
lo que me gustaría poder hacer es especificar el Cliente, SalesOrg y DistributionChannel globalmente para el DataContext, de modo que todo lo que necesito especificar en la consulta en sí es la ID del producto (MaterialNumber). De esa manera, cuando empiece a consultar nuestro entorno de producción, un simple cambio en el contexto de datos cambiará el entorno que estoy consultando.
¿Es esto posible? ¡Un breve ejemplo de código o punteros a la teoría de antecedentes sería maravilloso!
Solución
Podría tener un Expression<T>
preescrito que luego tendrá esos valores:
public Expression<Func<int>> GetPrices = p => // do Lambda here
Alternativamente, puede poner propiedades en su DataContext (recuerde, es una clase parcial por lo que es fácil de extender) que establece y luego se lee en su expresión.