EF 执行存储过程

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using MvcApplication6.Models;
namespace MvcApplication6.Controllers
{
    public class TestController : Controller
    {
        //
        // GET: /Test/
        public ActionResult TestValidation()
        {
            return View();
        }
        public ActionResult TestMultiValidation(IEnumerable<string> hobbies)
        {
            var list = new List<Hobby>
            {
                new Hobby{ ID="1", Name="1"},
                new Hobby{ ID="2", Name="2"},
                new Hobby{ ID="3", Name="3"},
                new Hobby{ ID="4", Name="4"},
                new Hobby{ ID="5", Name="5"}
            };
            ViewBag.Hobbies = list;
            return View(list);
        }
        public ActionResult TestProc()
        {
            using (UsersContext ctx=new UsersContext())
            {
                var param = new System.Data.SqlClient.SqlParameter
                {
                    ParameterName = "@modifiedCount",
                    SqlDbType = System.Data.SqlDbType.Int,
                    Direction = System.Data.ParameterDirection.Output
                };
                //var results = ctx.Database.ExecuteSqlCommand("exec dbo.proc_update @modifiedCount output", param);
                var results = ctx.Database.SqlQuery<Int32>("proc_update @modifiedCount output", param);
                var list = (int)param.Value;
                return Json(list, JsonRequestBehavior.AllowGet);
            }
                                            
        }
    }
}

DROP proc proc_update
go
create proc proc_update @modifiedCount int output
as
    begin 
        update UserProfile set UserName = '112233' where UserId < 6;
        set @modifiedCount = @@ROWCOUNT;
        select @modifiedCount;
    end 
go
---执行存储过程 
 DECLARE @RC int 
 set @RC = 0
 exec proc_update  @RC output
 select @RC  
 select * from UserProfile
/*DROP proc proc_update
go
create proc proc_update @modifiedCount int output
as
    begin 
        update UserProfile set UserName = '999999' where UserId < 6;
        set @modifiedCount = @@ROWCOUNT;
        return @modifiedCount;
   end 
go
---执行存储过程 
 DECLARE @RC int 
 set @RC = 1
 exec proc_update  @RC output
 select @RC  
 select * from UserProfile
 */

仅针对删除和修改的时候使用:在使用SqlQuery需要变通一下,将受影响行数作为查询结果


知识共享许可协议
《EF 执行存储过程》常伟华 创作。
采用 知识共享 署名-相同方式共享 3.0 中国大陆 许可协议进行许可。
  • 多说评论
  • 签名
  • 新浪微博
  • 默认评论
  • Tab Header 5

0 条评论 / 点击此处发表评论

Tab Content 5

开发技术


开发平台和工具

sitemap     148.96ms