2016-09-30 13 views
0

異なるアクションを持つストアドプロシージャが1つあります。例:Insert、select、updateはすべて1つのストアドプロシージャ内にあり、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 

この手順は、Entity Frameworkを使用してMVCで使用できます。もしそうなら、どのように?

あなたはコード - を使用する予定の場合は、誰もが簡単な方法

答えて

0

を提案することができますが、この

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

'@ Param1'はあなたのパラメータであり、' @ Type'を渡すことができます – Bharat

0

のように試すことができ、このような方法は、パラメータをマッピングしているが、私は@type
をマッピングすることができませんしたら最初のEntityFrameworkを使用して、必要に応じて挿入、更新、および削除操作をストアドプロシージャにマップできます。そのようなSPの例では

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

:詳細については、

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

ルックhere

SPを他の理由(CRUD以外)で実行する予定がある場合は、bharatsの回答に従ってSPを実行する必要があります。

関連する問題