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, передающим весь список в виде строки с разделителями-запятыми. Ваша хранимая процедура сначала проанализирует этот список во временной таблице, а затем обработает вычисление таким же образом, как и с табличным параметром.

Другие вопросы по тегам