Обучение
Модуль
Создание хранимых процедур и определяемых пользователем функций - Training
Это содержимое является частью хранимых процедур и определяемых пользователем функций.
Этот браузер больше не поддерживается.
Выполните обновление до Microsoft Edge, чтобы воспользоваться новейшими функциями, обновлениями для системы безопасности и технической поддержкой.
В этом пошаговом руководстве показано, как использовать конструктор Entity Framework (EF Designer) для импорта хранимых процедур в модель, а затем вызова импортированных хранимых процедур для получения результатов.
Обратите внимание, что Code First не поддерживает сопоставление хранимых процедур или функций. Однако можно вызывать хранимые процедуры или функции с помощью метода System.Data.Entity.DbSet.SqlQuery. Например:
var query = context.Products.SqlQuery("EXECUTE [dbo].[GetAllProducts]")`;
Для выполнения данного пошагового руководства необходимо выполнить следующие действия.
Щелкните проект правой кнопкой мыши в Обозреватель решений и выберите "Добавить -> Новый элемент".
Выберите данные из меню слева и выберите ADO.NET модель данных сущности в области шаблонов.
Введите EFwithSProcsModel.edmx для имени файла и нажмите кнопку "Добавить".
В диалоговом окне "Выбор содержимого модели" выберите "Создать из базы данных" и нажмите кнопку "Далее".
Нажмите кнопку " Создать подключение".
В диалоговом окне "Свойства подключения" введите имя сервера (например, (localdb)\mssqllocaldb), выберите метод проверки подлинности, введите School для имени базы данных и нажмите кнопку "ОК".
Диалоговое окно "Выбор подключения к данным" обновляется с помощью параметра подключения к базе данных.
В диалоговом окне "Выбор объектов базы данных" установите флажок "Таблицы ", чтобы выбрать все таблицы.
Кроме того, выберите следующие хранимые процедуры в узле хранимых процедур и функций : GetStudentGrades и GetDepartmentName.
Начиная с Visual Studio 2012 конструктор EF поддерживает массовый импорт хранимых процедур. Импорт выбранных хранимых процедур и функций в модель сущностей проверяется по умолчанию.
Нажмите кнопку Готово.
По умолчанию результаты каждой импортированной хранимой процедуры или функции, возвращающей несколько столбцов, автоматически становятся новым сложным типом. В этом примере мы хотим сопоставить результаты функции GetStudentGrades с сущностью StudentGrade и результатами GetDepartmentName ни с кем (ни одно значение по умолчанию).
Для импорта функции для возврата типа сущности столбцы, возвращаемые соответствующей хранимой процедурой, должны точно соответствовать скалярным свойствам возвращаемого типа сущности. Импорт функций также может возвращать коллекции простых типов, сложных типов или нет значения.
Откройте файл Program.cs, в котором определен метод Main. Добавьте следующий код в функцию Main.
Код вызывает две хранимые процедуры: GetStudentGrades (возвращает StudentGrades для указанного StudentId) и GetDepartmentName (возвращает имя отдела в выходном параметре).
using (SchoolEntities context = new SchoolEntities())
{
// Specify the Student ID.
int studentId = 2;
// Call GetStudentGrades and iterate through the returned collection.
foreach (StudentGrade grade in context.GetStudentGrades(studentId))
{
Console.WriteLine("StudentID: {0}\tSubject={1}", studentId, grade.Subject);
Console.WriteLine("Student grade: " + grade.Grade);
}
// Call GetDepartmentName.
// Declare the name variable that will contain the value returned by the output parameter.
ObjectParameter name = new ObjectParameter("Name", typeof(String));
context.GetDepartmentName(1, name);
Console.WriteLine("The department name is {0}", name.Value);
}
Скомпилируйте и запустите приложение. Программа выдает следующие результаты.
StudentID: 2
Student grade: 4.00
StudentID: 2
Student grade: 3.50
The department name is Engineering
Если используются выходные параметры, их значения не будут доступны до тех пор, пока результаты не будут прочитаны полностью. Это связано с базовым поведением DbDataReader, см . дополнительные сведения о получении данных с помощью DataReader .
Отзыв о .NET
.NET — это проект с открытым исходным кодом. Выберите ссылку, чтобы оставить отзыв:
Обучение
Модуль
Создание хранимых процедур и определяемых пользователем функций - Training
Это содержимое является частью хранимых процедур и определяемых пользователем функций.