Как сопоставить функции изменения с хранимыми процедурами (средства работы с моделью EDM)

В этом разделе описывается, как использовать конструктор моделей EDM ADO.NET (конструктор сущностей), чтобы сопоставить операции типа сущности (вставка, обновление и удаление) с хранимыми процедурами.

Платформа Entity Framework создает класс, производный от ObjectContext, который представляет контейнер сущностей, определенный в концептуальной модели. (Имя производного класса — это имя контейнера EntityContainer в файле концептуальной модели.) Этот класс реализует метод SaveChanges, который активизирует обновления в основной базе данных. В этих обновлениях могут использоваться инструкции SQL, которые автоматически создаются системой (по умолчанию); могут также использоваться хранимые процедуры, указанные разработчиком. Код приложения, используемый для создания, обновления и удаления сущностей, остается неизменным независимо от того, используются ли для обновления базы данных хранимые процедуры.

Cc716711.note(ru-ru,VS.100).gifПримечание
Если не выполнено сопоставление всех трех операций (вставки, обновления и удаления типов сущностей) хранимым процедурам, то несопоставленные операции выдадут ошибки во время выполнения и будет вызвано исключение UpdateException.

Следующие процедуры предполагают наличие EDMX-файла, открытого в конструкторе сущностей.

Сопоставление операции вставки с хранимой процедурой

Сопоставление операции вставки с хранимой процедурой

  1. В области конструктора сущностей или в окне Обозреватель модели щелкните правой кнопкой мыши тип сущности, с которым необходимо сопоставить операцию вставки, а затем выберите Сопоставление хранимых процедур.

    Откроется представление Сопоставить сущность с функциями в окне Сведения о сопоставлении.

  2. Выберите <Выбор функции вставки>.

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

    Окно заполняется сопоставлениями по умолчанию между свойствами сущности и параметрами хранимой процедуры.

  4. Для каждого параметра хранимой процедуры измените сопоставление соответствующим образом, щелкнув соответствующее поле свойства и выбрав свойство из раскрывающегося списка.

    Cc716711.note(ru-ru,VS.100).gifПримечание
    Все ключи сущностей должны иметь сопоставления.Если в хранимой процедуре используется инструкция INSERT, то ключ сущности обычно сопоставляется с первичным ключом, созданным при вставке новой строки.В следующих шагах описывается процесс сопоставления данных, возвращаемых хранимой процедурой свойствам сущностей.

  5. Щелкните <Добавление привязки к результату>.

    Поле становится изменяемым.

  6. Введите имя параметра, содержащего данные, возвращаемые хранимой процедурой.

  7. Щелкните поле свойства, соответствующее имени параметра.

    Поле становится раскрывающимся списком свойств.

  8. Выберите свойство, с которым нужно сопоставить возвращенные данные

    Cc716711.note(ru-ru,VS.100).gifПримечание
    Для выходных параметров с целочисленным значением установлен флажок Параметр числа затронутых строк.Если флажок выбран для параметра и при вызове операции вставки возвращенное значение равно нулю, то будет вызвано исключение OptimisticConcurrencyException.

  9. Повторите шаги с 5 по 8 для каждого возвращаемого значения и несопоставленного свойства.

Операция вставки для выбранного типа сущности теперь сопоставлена хранимой процедуре.

Сопоставление операции обновления с хранимой процедурой

Сопоставление операции обновления с хранимой процедурой

  1. В области конструктора сущностей или в окне Обозреватель модели щелкните правой кнопкой мыши тип сущности, с которым необходимо сопоставить операцию вставки, а затем выберите Сопоставление хранимых процедур.

    Откроется представление Сопоставить сущность с функциями в окне Сведения о сопоставлении.

  2. Щелкните <Выбор функции обновления>.

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

    Окно заполняется сопоставлениями по умолчанию между свойствами сущности и параметрами хранимой процедуры.

  4. Для каждого параметра хранимой процедуры измените сопоставление соответствующим образом, щелкнув соответствующее поле свойства и выбрав свойство из раскрывающегося списка.

  5. Для каждого свойства можно при желании отметить флажок в столбце Использовать исходное значение.

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

    Cc716711.note(ru-ru,VS.100).gifПримечание
    При сопоставлении операции обновления можно сопоставлять данные, возвращаемые хранимой процедурой, свойствам сущностей.В следующих шагах описывается процесс сопоставления данных, возвращаемых хранимой процедурой свойствам сущностей.

  6. Щелкните элемент <Добавление привязки к результату>.

    Поле становится изменяемым.

  7. Введите имя параметра, содержащего данные, возвращаемые хранимой процедурой.

  8. Щелкните поле свойства, соответствующее имени параметра.

  9. Из раскрывающегося списка выберите свойство, с которым должны быть сопоставлены возвращаемые данные.

    Cc716711.note(ru-ru,VS.100).gifПримечание
    Для выходных параметров с целочисленным значением установлен флажок Параметр числа затронутых строк.Если флажок выбран для параметра и при вызове операции обновления возвращенное значение равно нулю, то будет вызвано исключение OptimisticConcurrencyException.

  10. В случае необходимости повторите шаги с 6 по 9 для каждого возвращаемого значения.

После этого операция обновления для выбранного типа сущности становится сопоставленной хранимой процедуре.

Сопоставление операции удаления с хранимой процедурой

Сопоставление операции удаления с хранимой процедурой

  1. В области конструктора сущностей или в окне Обозреватель модели щелкните правой кнопкой мыши тип сущности, с которым необходимо сопоставить операцию вставки, а затем выберите Сопоставление хранимых процедур.

    Откроется представление Сопоставить сущность с функциями в окне Сведения о сопоставлении.

  2. Щелкните <Выбор функции удаления>.

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

    Окно заполняется сопоставлениями по умолчанию между свойствами сущности и параметрами хранимой процедуры.

  4. Для каждого параметра хранимой процедуры измените сопоставление соответствующим образом, щелкнув соответствующее поле свойства и выбрав свойство из раскрывающегося списка.

    Cc716711.note(ru-ru,VS.100).gifПримечание
    Необходимо сопоставить ассоциации с параметрами хранимой процедуры.Ассоциации доступны для выбора из раскрывающегося списка свойств.

Cc716711.note(ru-ru,VS.100).gifПримечание
Для выходных параметров с целочисленным значением установлен флажок Параметр числа затронутых строк.Если флажок выбран для параметра и при вызове операции удаления возвращенное значение равно нулю, то будет вызвано исключение OptimisticConcurrencyException.

См. также

Задачи

Пошаговое руководство по сопоставлению сущностей с хранимыми процедурами (средства модели EDM)