Как правильно загрузить DataContext условного хранимого процесса Linq-SQL - PullRequest
0 голосов
/ 26 января 2009

У меня есть сохраненный процесс, который выполняет проверку параметра

ех.

IF @SearchType = 'BNa'
BEGIN
    ... DO something
END
ELSE IF @SearchType = 'SNa'
BEGIN
    ... DO something
END

Таким образом, по умолчанию Stored Proc возвращает скалярное значение, и если SearchType = что-то допустимое, он возвращает IMultipleValues.

Проблема заключается в том, что когда я помещаю свой сохраненный процесс в конструктор DataContext, он создает LINQ-to-SQL для функции, которая возвращает только скалярное целое число. Он не понимает, что Strored Proc может возвращать IMultipleResults со скалярным значением и набором данных.

Кто-нибудь знает, как сделать LINQ-to-SQL для экстраполяции возможных возвращаемых значений?

1 Ответ

0 голосов
/ 29 января 2009

Я не могу ответить на ваш вопрос напрямую, но вы пытались использовать SQL Profiler, чтобы выяснить, как дизайнер извлекает метаданные для вашей хранимой процедуры?

Я думаю, что в вашей ситуации у дизайнера, возможно, не получится придумать что-то для вас. SQL Profiler позволит вам точно это выяснить ...

У меня был довольно положительный опыт использования SqlMetal (вместо дизайнера). Чтобы сэкономить Google, документация на http://msdn.microsoft.com/en-us/library/bb386987.aspx.

Один из способов использования SqlMetal:

  1. Запустите SqlMetal для извлечения метаданных базы данных в файл DBML.
  2. Запустите пользовательскую обработку файла DBML (это легко сделать, так как это всего лишь XML).
  3. Запустите SqlMetal снова, чтобы превратить обновленный DBML в код.

Используя этот подход, вы можете исправить метаданные, используемые для вашей хранимой процедуры (при условии, что она не может быть определена правильно).

Преимущество этого подхода для меня заключается в том, что вы можете изменять свою базу данных в любое время и легко восстанавливать соответствующий строго типизированный код, сохраняя при этом высокую степень контроля над генерируемыми данными.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...