Entity Framework Хранимая процедура
Как работать с хранимой процедурой в Entity Framework?
Как вызвать хранимую процедуру из Entity Framework?
StackOverflow Вопросы, связанные с
- Как вызвать хранимые процедуры с EntityFramework?
- Порядок вставки нескольких записей в Entity Framework
Ответ
Entity Framework позволяет использовать хранимые процедуры для выполнения предопределенной логики для таблиц базы данных. Он также может указывать, что EF должен использовать ваши хранимые процедуры для вставки, обновления или удаления сущностей.
- Вы можете использовать хранимые процедуры либо для получения данных, либо для добавления / обновления / удаления записей для одной или нескольких таблиц базы данных.
У нас есть очень простая база данных, которая содержит одну таблицу, и вы можете создать эту таблицу, используя следующий SQL.
CREATE TABLE [dbo].[Blogs] (
[BlogId] INT IDENTITY (1, 1) NOT NULL,
[Name] NVARCHAR (MAX) NULL,
[Url] NVARCHAR (MAX) NULL,
CONSTRAINT [PK_dbo.Blogs] PRIMARY KEY CLUSTERED ([BlogId] ASC)
);
Выберите New Query и введите следующий код в редакторе T-SQL, чтобы добавить хранимую процедуру в базу данных, которая будет возвращать блог на основе его идентификатора.
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id =
OBJECT_ID(N'[dbo].[GetBlog]') AND type in (N'P', N'PC'))
BEGIN
EXEC dbo.sp_executesql @statement = N'
CREATE PROCEDURE [dbo].[GetBlog]
@BlogId int
AS
SELECT * FROM dbo.Blogs
WHERE BlogId = @BlogId
'
END
GO
GetBlog
хранимая процедура займет BlogId
в качестве параметра и возвращает блог.
Выполните команду SQL, и вы увидите, что хранимая процедура «GetBlog» добавлена в вашу базу данных. Выполните запрос и обновите базу данных

Давайте добавим, создадим новый проект и добавим новый элемент, выбрав ADO.NET Entity Data Model. Используйте EF Designer из базы данных, и EF сгенерирует все необходимые классы для вас. Вы можете просто вызвать хранимую процедуру GetBlog, используя контекст.
using ( var context = new BloggingContextDbEntities())
{
var blogId = 1;
var blog = context.GetBlog(blogId).FirstOrDefault();
}
Он вернет блог, где Id равен 1.