Могу ли я указать набор базовых параметров для Linq-to-sql DataContext?
-
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 (помните, что это класс частичный , поэтому его легко расширять), который вы устанавливаете, а затем считываете его выражение.