存储过程未正确触发

时间:2017-06-26 08:13:54

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

我按照以下方式照常调用存储过程

public void runSP(int Id){
    using(var context = new Entities())
    {
        SqlParameter IdParam = new SqlParameter("@id", Id);
        var x = context.Database.SqlQuery<entity>("sp_ChosenSP @id", IdParam);
        context.SaveChanges();
    }
}

存储过程采用Id并从entity中删除。现在的事情是,当我在调试视图中并且在Id处设置断点然后打开x的结果视图(将鼠标悬停在x上,单击向下箭头时),此savechanges似乎仅被删除打开结果视图)。

所以我的问题是,为什么会发生这种情况,我应该如何调整我的代码呢? 谢谢!

2 个答案:

答案 0 :(得分:2)

Database.SqlQuery应该用于检索行,而不是删除它们。

使用ExecuteSqlCommand调用更新或删除过程。

答案 1 :(得分:1)

试试这个:

public void runSP(int Id){
    using(var context = new Entities())
    {
        SqlParameter idParam = new SqlParameter("@id", Id);
        var x = context.Database.SqlQuery<entity>("exec sp_ChosenSP @id", idParam ).ToList<entity>();
        context.SaveChanges();
    }
}