2016-09-30 148 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。