一、执行存储过程

 1、执行insert存储过程

执行insert、delete、update存储过程与执行insert、delete、update语句一样,都是使用Execute() 

CREATE PROCEDURE [dbo].[proc_AddSysUser01]
	-- Add the parameters for the stored procedure here
	@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
GO
[HttpPost]
public ActionResult InsertProcedure(FormCollection collection)
{
    try
    {
        #region 执行insert存储过程
        using (IDbConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["NHibernate"].ConnectionString))
        {
            int result = connection.Execute("proc_AddSysUser01", new
            {
                Name = collection["name"],
                Phone = collection["phone"]
            }, commandType: CommandType.StoredProcedure);
        }
        #endregion

        return RedirectToAction("Index");
    }
    catch (Exception ex)
    {
        return View();
    }
}

2、执行select存储过程 

执行select存储过程与执行select语句一样,都是使用Query<Sys_User>()  

CREATE PROCEDURE [dbo].[proc_GetSysUser] 
	-- Add the parameters for the stored procedure here
	@Id int,
	@Name nvarchar(50)
AS
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;

    -- Insert statements for procedure here
	select * from Sys_User where Id<@Id and Name like '%'+@Name+'%'
END
GO
public ActionResult SelectProcedure(int id, string name)
{
    try
    {
        #region 执行select存储过程
        using (IDbConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["NHibernate"].ConnectionString))
        {
            List<Sys_User_bak> userList = connection.Query<Sys_User_bak>("proc_GetSysUser", new
            {
                Id = id,
                Name = name
            }, commandType: CommandType.StoredProcedure).AsList();
        }
        #endregion

        return RedirectToAction("Index");
    }
    catch (Exception ex)
    {
        return View();
    }
}

 二、in操作

public ActionResult DetailsSome(int id, FormCollection collection)
{
    try
    {
        #region in操作
        using (IDbConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["NHibernate"].ConnectionString))
        {
            List<Sys_User_bak> userList = connection.Query<Sys_User_bak>("select Id,Name,Phone,Address from Sys_User_bak where Id in @Id and Name like @Name", new
            {
                Id = new string[] { "1", "2", "12" },
                Name = "%" + collection["name"] + "%"
            }).AsList();
        } 
        #endregion

        return RedirectToAction("Index");
    }
    catch (Exception ex)
    {
        return View();
    }
}

三、执行多条select语句 

public ActionResult GetSomeTable(FormCollection collection)
{
    try
    {
        #region 一次查询多张表
        using (IDbConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["NHibernate"].ConnectionString))
        {
            string sql = "select * from Sys_User_bak;select * from Sys_User_aaa;";
            SqlMapper.GridReader reader = connection.QueryMultiple(sql);
            var userBakList = reader.Read<Sys_User_bak>();
            var userAaaList = reader.Read<Sys_User_aaa>();
            reader.Dispose();
        }
        #endregion

        return RedirectToAction("Index");
    }
    catch (Exception ex)
    {
        return View();
    }
}