關於Entity Freamwork 儲存過程操作

weixin_34214500發表於2019-01-14
關於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"

相關文章