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

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

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

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 изменит то, какую среду я запрашиваю.

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

1 Ответ

0 голосов
/ 12 ноября 2008

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

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

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

...