¿Puedo especificar un conjunto de parámetros básicos para un DataContext de Linq a sql?

StackOverflow https://stackoverflow.com/questions/278281

  •  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!

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top