【问题标题】:Stored Procedure with Entity Framework带有实体框架的存储过程
【发布时间】:2016-09-30 16:46:18
【问题描述】:

我有一个存储过程,其中包含不同的操作。例如 - 插入、选择、更新都在一个存储过程中,我使用 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
任何人都可以提出任何简单的方法

【问题讨论】:

    标签: asp.net-mvc entity-framework stored-procedures


    【解决方案1】:

    你可以这样试试

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

    【讨论】:

    • @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) 
    

    查看here 了解更多信息。

    如果您出于其他原因(非 CRUD)计划执行 SP,那么您必须按照 bharats 的回答执行 SP。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-19
      • 2016-12-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-19
      相关资源
      最近更新 更多