關(guān)于EF的存儲過程操作
作為個人是非常不喜歡使用EF的,因為EF操作起來感覺如刺在喉一樣,完全被束縛了民珍;關(guān)于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
//此處省略業(yè)務(wù)
//結(jié)尾需要重新查一次返回@Reg 值.不然無法返回值. 這塊沒有搞明白...
select @Reg
end
--聲明對象
public class TEXT
{
public string Reg {get;set;}
}
--聲明sql參數(shù)
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"));
--執(zhí)行存儲過程 Single是為了返回參數(shù)用
var info = db.Database.SqlQuery<TEXT>(@" exec proc_ImportReg @Reg out ,@No", list.ToArray()).Single();
--獲取返回參數(shù) 通過傳入對應(yīng)的SqlParameter獲取返回值
return list[0].Value // 索引為0的參數(shù)鸭廷,其實就是"@Reg"