关于Entity Freamwork 存储过程操作

关于EF的存储过程操作

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

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

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

 db.Database.ExecuteSqlCommand(" exec  proc proc_ImportReg  @id ",new List(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 list = new List();
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(@" exec proc_ImportReg @Reg out ,@No", list.ToArray()).Single();
--获取返回参数 通过传入对应的SqlParameter获取返回值
return list[0].Value    // 索引为0的参数,其实就是"@Reg"

你可能感兴趣的:(关于Entity Freamwork 存储过程操作)