Новые Лпр-ки. Веб ЛПР новые (1). Лабораторная работа Разработка базовой основы Web приложения 5 Упражнение Создание Web приложения 5
Скачать 1.04 Mb.
|
Лабораторная работа 7. Использование хранимых процедурВ этой работе вы узнаете, как использовать хранимые процедуры, чтобы получить больше контроля над доступом к базе данных. Платформа Entity Framework поддерживает возможность использования хранимых процедур для доступа к базе данных. Для любой сущности вы можете указать хранимую процедуру, чтобы использовать ее для создания, обновления или удаления объектов этого типа. Тогда в модели данных вы можете добавить ссылки на хранимые процедуры, которые можно использовать для выполнения таких задач, как получение наборов данных. Использование хранимых процедур является общим требованием для доступа к базе данных. В некоторых случаях администратор базы данных может потребовать, чтобы весь доступ к базе данных проходил через хранимые процедуры в целях безопасности. В других случаях вы можете построить бизнес-логики в некоторых процессах, которые Entity Framework использует при обновлении базы данных. Например, всякий раз, когда объект удаляется, возможно, вы хотите скопировать его в архивной базе данных. Или, когда ряд обновляется, вы можете написать строку таблицы регистрации, которая записывает, кто сделал изменения. Вы можете выполнить эти виды задач в хранимой процедуре, которая вызывается, когда Entity Framework удаляет или обновляет объект. В этой работе вы измените способ обращения к базе данных для некоторых уже созданных страниц. Вы создадите хранимые процедуры в базе данных для вставки объектов Student и Instructor. Вы добавите их в модели данных, укажите, что Entity Framework должен использовать их для добавления объектов Student и Instructor в базу данных. Вы также создадите хранимую процедуру, которую можно использовать для извлечения объектов Course. Упражнение 1. Создание хранимых процедур в базе данныхВ Server Explorer (Обозревателе серверов) раскройте узел School.mdf, далее раскройте узел Stored Procedures (Хранимые процедуры) и просмотрите список уже существующих процедур в базе данных School. Выделите папку Stored Procedures (Хранимые процедуры) и в контекстном меню выберите команду Add New Stored Procedure (Добавить новую хранимую процедуру). Скопируйте следующие SQL-выражения и вставьте в окно редактирования хранимой процедуры, заменив шаблон: CREATE PROCEDURE [dbo].[InsertStudent] @LastName nvarchar(50), @FirstName nvarchar(50), @EnrollmentDate datetime AS INSERT INTO dbo.Person (LastName, FirstName, EnrollmentDate) VALUES (@LastName, @FirstName, @EnrollmentDate); SELECT SCOPE_IDENTITY() as NewPersonID; Student имеет четыре свойства: PersonID, LastName, FirstName и EnrollmentDate. В базе данных генерируется значение идентификатора автоматически, и хранимая процедура принимает параметры для трех других свойств. Хранимая процедура возвращает значение ключа записи новой строки так, чтобы платформа Entity Framework могла отслеживать версию объекта в памяти. Сохраните и закройте хранимую процедуру. Создайте хранимую процедуру InsertInstructor, используя следующее SQL выражение: CREATE PROCEDURE [dbo].[InsertInstructor] @LastName nvarchar(50), @FirstName nvarchar(50), @HireDate datetime AS INSERT INTO dbo.Person (LastName, FirstName, HireDate) VALUES (@LastName, @FirstName, @HireDate); SELECT SCOPE_IDENTITY() as NewPersonID; Создайте две хранимые процедуры обновления объектов Student и Instructor. (база данных имеет хранимую процедуру удаления DeletePerson, которая может применяться и для Instructor и для Student). CREATE PROCEDURE [dbo].[UpdateStudent] @PersonID int, @LastName nvarchar(50), @FirstName nvarchar(50), @EnrollmentDate datetime AS UPDATE Person SET LastName=@LastName, FirstName=@FirstName, EnrollmentDate=@EnrollmentDate WHERE PersonID=@PersonID; CREATE PROCEDURE [dbo].[UpdateInstructor] @PersonID int, @LastName nvarchar(50), @FirstName nvarchar(50), @HireDate datetime AS UPDATE Person SET LastName=@LastName, FirstName=@FirstName, HireDate=@HireDate WHERE PersonID=@PersonID; Создайте хранимую процедуру, которая будет считывать данные о курсах: CREATE PROCEDURE [dbo].[GetCourses] AS SELECT CourseID, Title, Credits, DepartmentID FROM dbo.Course |