Хранимая процедура с Entity Framework

#asp.net-mvc #entity-framework #stored-procedures

#asp.net-mvc #entity-framework #хранимые процедуры

Вопрос:

У меня есть одна хранимая процедура с различными действиями в ней. Например, Insert, select, update все находятся в одной хранимой процедуре, и я выполняю ее, используя условие if else.

 BEGIN

if(@type = 'add')
INSERT INTO [dbo].[napme]
       ([firstname]
       ,[lastname]
       ,[Address]
       ,[City])
 VALUES
       (@firstname,@lastname,@Address,@City)


if(@type = 'select')
select * from napme

END
  

Теперь я могу использовать эту процедуру в MVC, используя Entity Framework. Если да, то как?

Как только такой метод сопоставляет параметры, но я не могу сопоставить @type
, может кто-нибудь предложить какой-нибудь простой способ

Ответ №1:

Вы можете попробовать так

 var courseList = ctx.Database.SqlQuery<YourEntityName>("exec ProcName @Param1", Param1).ToList<YourEntityName>();
  

Комментарии:

1. @Param1 это не что иное, как ваш параметр, в который вы можете передать свой @Type

Ответ №2:

Если вы планируете использовать Code-First EntityFramework, вы можете сопоставить операции вставки, обновления и удаления с хранимыми процедурами, если хотите.

 protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder 
        .Entity<YourEntityClass>() 
        .MapToStoredProcedures();
}
  

С примером SP, подобным этому:

 CREATE PROCEDURE [dbo].[YourEntityClass_Insert]  
  @param1 nvarchar(max),  
  @param2 nvarchar(max)  
AS  
BEGIN 
   INSERT INTO [dbo].[YourEntityClass] ([col1], [col2]) 
   VALUES (@param1, @param2) 
  

Смотрите здесь для получения дополнительной информации.

Если вы планируете выполнить SP по другим причинам (не CRUD), вам придется выполнить SP в соответствии с ответом бхарата.