2016-09-30 184 views
0

我有一個存儲過程,其中有不同的操作。例如 - 插入,選擇,更新全部在一個存儲過程中,並使用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中使用該過程。如果是這樣如何?

一旦這種方法被映射的參數,但我無法映射@type
任何人都可以提出任何簡單的方法

回答

0

你可以嘗試這樣的

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

'@Param1'只是你的參數,你可以通過'@Type' – Bharat

0

如果你打算使用代碼 - 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) 

查找here獲得更多信息。

如果您計劃爲其他原因執行SP(非CRUD),則必須按照bharats答案執行SP。