如何在EF Code-First中使用存储过程?

时间:2016-05-11 17:50:45

标签: sql-server entity-framework stored-procedures

我正在优化一些查询,我想将其中一个推入存储过程,比如spGetUsers

我了解如何从现有存储过程中获取数据,但我该如何确保 - 使用Code-First - update-database也会导入我的过程并更新其内容需要,处理proc删除等?

2 个答案:

答案 0 :(得分:0)

//并更新其内容//

你没有得到任何自动魔法。 承担维护存储过程的工作。

这是创建EF和使用EF的激励因素之一。不必维护.sql文件。

即使使用"获取",如果您重命名任何内容,仍需要维护。

注意:EF在使用Translate方法创建实体时不会考虑任何映射。它只是将结果集中的列名与类上的属性名匹配。

(来自https://msdn.microsoft.com/en-us/data/jj691402.aspx

答案 1 :(得分:0)

您应该能够从迁移脚本中自动执行任何存储过程更新。我建议将每个alter放入一个单独的Sql()方法调用中;如果出现语法错误,诊断起来会更容易。

无论何时运行迁移,您的脚本都会自动运行,并且在降级的情况下可以恢复。

此外,如果您需要执行脚本,则可以运行Sql("exec dbo.TestProc")

 public override void Up()
    {

        Sql(alterProc);
    }

    public override void Down()
    {
        Sql(undoProc);
    }

string alterProc = @"ALTER PROCEDURE AS BEGIN dbo.TestProc AS BEGIN SELECT 1 END"
string undoProc= @"ALTER PROCEDURE AS BEGIN dbo.TestProc AS BEGIN SELECT 2 END"
相关问题