Могу ли я указать набор базовых параметров для Linq-to-sql DataContext?

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

  •  07-07-2019
  •  | 
  •  

Вопрос

У меня есть DataContext LINQ-to-SQL, который представляет отношение «родитель-потомок» продуктов к ценам. Я перебираю список продуктов и получаю цены на каждый из них. Проблема заключается в том, что в таблицах за продуктами и ценами содержится список продуктов или цен для нескольких сред, определяемый комплексным ключом из 3 полей. Я хочу получить продукты и цены только для одной из этих сред.

Я могу сделать это, указав длинное условие where в каждом запросе LINQ, состоящем из ключа продукта и сложного ключа среды, что-то вроде этого:

var price = ( from condition in conditiontype where condition.MaterialNumber == material && condition.Client == "400" && condition.SalesOrg == "1000" && condition.DistributionChannel == "10" select condition.ConditionDetails[0].ConditionValue );

я хотел бы иметь возможность глобально указать Client, SalesOrg и DistributionChannel для DataContext, чтобы все, что мне нужно было указать в самом запросе, - это Product ID (MaterialNumber). Таким образом, когда я начинаю запрашивать нашу производственную среду, простое изменение DataContext изменит то, какую среду я запрашиваю.

Возможно ли это? Либо краткий пример кода, либо ссылки на фоновую теорию были бы замечательными!

Это было полезно?

Решение

У вас может быть заранее написанное Expression<T>, в котором затем будут указаны эти значения:

public Expression<Func<int>> GetPrices = p => // do Lambda here

В качестве альтернативы вы можете поместить свойства в свой DataContext (помните, что это класс частичный , поэтому его легко расширять), который вы устанавливаете, а затем считываете его выражение.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top