美文网首页Net程序员
关于Entity Freamwork 存储过程操作

关于Entity Freamwork 存储过程操作

作者: Aneko | 来源:发表于2019-01-14 17:09 被阅读12次
    关于EF的存储过程操作

    作为个人是非常不喜欢使用EF的,因为EF操作起来感觉如刺在喉一样,完全被束缚了;关于ORM我还是比较喜欢Dapper的,基于ADO.NET一切都那么行云流水;
    但是公司需要所以...

    前提
    • 不使用EF自带的存储过程管理工具
    • 存储过程带返回值

    1.第一种比较简单,不带返回值的;

     db.Database.ExecuteSqlCommand(" exec  proc proc_ImportReg  @id ",new List<SqlParameter>(new SqlParameter("@id",1)).ToArray());
    

    2.第二种带返回值的

    --声明存储过程
    create proc proc_ImportReg 
    @Reg varchar output,
    @No varchar
    as
    begin
      //此处省略业务
      //结尾需要重新查一次返回@Reg 值.不然无法返回值.   这块没有搞明白...
      select @Reg
    end
    --声明对象
    public class TEXT
    {
      public string Reg {get;set;}
    }
    --声明sql参数
    List<SqlParameter> list = new List<SqlParameter>();
    SqlParameter Param = new System.Data.SqlClient.SqlParameter
    {
            ParameterName = "@Reg",
            Value = "",
            Direction = ParameterDirection.Output
    };
    list.Add(Param);
    list.Add(new SqlParameter("@No", "test"));
    --执行存储过程 Single是为了返回参数用
     var info = db.Database.SqlQuery<TEXT>(@" exec proc_ImportReg @Reg out ,@No", list.ToArray()).Single();
    --获取返回参数 通过传入对应的SqlParameter获取返回值
    return list[0].Value    // 索引为0的参数,其实就是"@Reg"
    

    相关文章

      网友评论

        本文标题:关于Entity Freamwork 存储过程操作

        本文链接:https://www.haomeiwen.com/subject/kurjdqtx.html