jquery ios7 vue绑定class vue表单 vue例子 vue循环数组 vue滑动事件 jquery选择子元素 jquery使用ajax bootstrap侧边栏 拼接json字符串 mysql或者条件 python参考手册 python模块下载 javaindexof java泛型的使用 获取当前时间java linux下载安装 linux密码 脚本之家 梦幻西游手游助手 路由器有辐射吗 删除数组中的某个元素 shutil 电子商城系统 mysql使用教程 免费图片文字识别软件 pr时间轴 万能低格工具还原u盘 无主之地2联机超时 驱动程序更新 地图数据采集 php保留两位小数 惠普打印机怎么加粉 ps涂抹工具快捷键 cad标题栏 smartupload java游戏高级编程 gridview排序 autoit
当前位置: 首页 > 学习教程  > 编程语言

ef 调用存储过程

2020/11/4 15:09:56 文章标签:

原文&#xff1a;EF执行存储过程 https://blog.csdn.net/xiaouncle/article/details/82914255 EF执行存储过程与执行Sql语句非常类似&#xff0c;insert、delete、update操作通过ExecuteSqlCommand()执行&#xff0c;select操作通过SqlQuery<Sys_User>()执行。 一、执行…

 

原文:EF执行存储过程

https://blog.csdn.net/xiaouncle/article/details/82914255

EF执行存储过程与执行Sql语句非常类似,insert、delete、update操作通过ExecuteSqlCommand()执行,select操作通过SqlQuery<Sys_User>()执行。

一、执行insert存储过程(无返回值)

sql

CREATE PROCEDURE [dbo].[proc_AddSysUser01]
	@Name nvarchar(50),
	@Phone nvarchar(50)
AS
BEGIN
	--SET NOCOUNT ON;
 
    -- Insert statements for procedure here
	insert into Sys_User values(@Name,@Phone,'耶路撒冷',GETDATE())
END

 c# 程序代码

public ActionResult ExecuteInsertProc(string name, string phone)
{
    using(NHibernateContext context = new NHibernateContext())
    {
        SqlParameter pp_name = new SqlParameter("@Name", name);
        SqlParameter pp_phone = new SqlParameter("@Phone", phone);
        int count = context.Database.ExecuteSqlCommand("exec [proc_AddSysUser01] @Name,@Phone", pp_name, pp_phone);
        context.SaveChanges();
    }
    return View("Index");
}

二、执行insert存储过程(out参数返回主键)

sql

CREATE PROCEDURE [dbo].[proc_AddSysUser02]
	@Name nvarchar(50),
	@Phone nvarchar(50),
	@Id int output
AS
BEGIN
	--SET NOCOUNT ON;
 
        -- Insert statements for procedure here
	insert into Sys_User values (@Name,@Phone,'安曼酒店',GETDATE());
	select @Id=SCOPE_IDENTITY();
END

 c# 程序代码

public ActionResult ExecuteInsertProc(string name, string phone)
{    
    using (NHibernateContext context = new NHibernateContext())
    {
        SqlParameter pp_id = new SqlParameter("@Id", SqlDbType.Int);
        pp_id.Direction = ParameterDirection.Output;
        SqlParameter pp_name = new SqlParameter("@Name", name);
        SqlParameter pp_phone = new SqlParameter("@Phone", phone);
        //count值为1,out参数需要放在最后
        int count = context.Database.ExecuteSqlCommand("exec [proc_AddSysUser02] @Name,@Phone,@Id out", pp_id, pp_name, pp_phone);
        //id值为10010
        int id = int.Parse(pp_id.Value.ToString());
        context.SaveChanges();
    }
    return View("Index");
}

三、执行delete存储过程

sql

CREATE PROCEDURE [dbo].[proc_DeleteSysUser]
	@Id int,
	@Name nvarchar(50)
AS
BEGIN
	--SET NOCOUNT ON;
 
        -- Insert statements for procedure here
	delete from Sys_User where Id>@Id and Name like '%'+@Name+'%'
END

 c# 程序代码

public ActionResult ExecuteDeleteProc(int id, string name)
{
    using (NHibernateContext context = new NHibernateContext())
    {
        SqlParameter pp_id = new SqlParameter("@Id", id);
        SqlParameter pp_name = new SqlParameter("@Name", name);
        //count值为2
        int count = context.Database.ExecuteSqlCommand("exec [proc_DeleteSysUser] @Id,@Name", pp_id, pp_name);
        context.SaveChanges();
    }
    return View("Index");
}

四、执行update存储过程

sql

CREATE PROCEDURE [dbo].[proc_UpdateSysUser]
	@Id int,
	@Name nvarchar(50),
	@Phone nvarchar(50)
AS
BEGIN
	--SET NOCOUNT ON;
 
        -- Insert statements for procedure here
	update Sys_User set Phone=@Phone where Id>@Id and Name like '%'+@Name+'%'
END

c# 程序代码

public ActionResult ExecuteUpdateProc(int id, string name, string phone)
{
    using (NHibernateContext context = new NHibernateContext())
    {
        SqlParameter pp_id = new SqlParameter("@Id", id);
        SqlParameter pp_name = new SqlParameter("@Name", name);
        SqlParameter pp_phone = new SqlParameter("@Phone", phone);
        //count值为2
        int count = context.Database.ExecuteSqlCommand("exec [proc_UpdateSysUser] @Id,@Name,@Phone", pp_id, pp_name, pp_phone);
        context.SaveChanges();
    }
    return View("Index");
}

五、执行select存储过程

sql

CREATE PROCEDURE [dbo].[proc_GetSysUser] 
	@Id int,
	@Name nvarchar(50)
AS
BEGIN
	SET NOCOUNT ON;
 
        -- Insert statements for procedure here
	select * from Sys_User where Id<@Id and Name like '%'+@Name+'%'
END

c# 程序代码

public ActionResult ExecuteSelectProc(int id, string name)
{
    using (NHibernateContext context = new NHibernateContext())
    {
        SqlParameter pp_id = new SqlParameter("@Id", id);
        SqlParameter pp_name = new SqlParameter("@Name", name);
        //userList.Count值为96
        List<Sys_User> userList = context.Database.SqlQuery<Sys_User>("exec [proc_GetSysUser] @Id,@Name", pp_id, pp_name).Cast<Sys_User>().ToList();                
        context.SaveChanges();
    }
    return View("Index");
}

 

 

 

 


本文链接: http://www.dtmao.cc/news_show_350351.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?