关于Entity Freamwork 存储过程操作

关于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"
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容