UDT как параметр в запросе EF4
Я знаю, что EF4 не поддерживает пользовательские типы таблиц (пока). Мне нужно написать запрос, который принимает список пар <product_code, quantity>
и возвращает набор записей с product_code
а также price
для каждого product_code
прошло, основываясь на quantity
, Какой мой лучший вариант с EF4 для моделирования этого? Расчет в базе данных для получения цены довольно сложен, и существует множество продуктов, что означает, что большинство действий должно происходить на стороне сервера. (Например, я не могу сначала получить полный список цен с сервера, а затем отфильтровать нужные мне продукты на клиенте. Я также не могу применить количество к расчету на клиенте, которое должно быть передано на сервер и обработано там). Любые мысли приветствуются.
1 ответ
Я думаю, что вы в основном ответили на ваш вопрос. Вычисления должны быть выполнены на сервере базы данных, и вы просто хотите получить результат, не так ли? Если вы используете SQL Server 2008, вы можете создать хранимую процедуру, которая принимает параметр с табличным значением. Теперь вы можете вызвать эту процедуру либо напрямую, используя ADO.NET, либо используя EF и context.ExecuteStoreQuery
где ты еще проходишь DataTable
в SqlParameter
с SqlDbType.Structured
,
Если вы не используете SQL Server 2008, вам нужна хранимая процедура с одним большим параметром nvarchar, передающим весь список в виде строки с разделителями-запятыми. Ваша хранимая процедура сначала проанализирует этот список во временной таблице, а затем обработает вычисление таким же образом, как и с табличным параметром.