1. 程式人生 > >EF執行存儲過程並且返回DataSet

EF執行存儲過程並且返回DataSet

nco 官方文檔 entity connect pub () code sda spa

個人想到的辦法是,EF實質也是Ado那一套進化而來,所以想著肯定會有點聯系。翻閱官方文檔之後

看到一句解釋:db.Database.Connection 返回上下文使用的鏈接。然後接著斷點調試發現返回的就是 webcofing 裏面的

<connectionStrings>連接數據庫配置</connectionStrings>

so~

照搬Ado完事,代碼如下:

 #region 獲取DataSet返回結構集
        public DataSet GetDataSet(string sql, params SqlParameter[] para)
        {
            List
<string> sql2 = new List<string>(); for (int i = 0; i < para.Length; i++) { SqlParameter p = para[i]; sql2.Add(p.ParameterName); } DataSet sd = new DataSet(); using (var db = new BaseContext()) { SqlConnection conn
= db.Database.Connection as SqlConnection; using (SqlCommand cmd = new SqlCommand(sql + " " + string.Join(",", sql2.ToArray()), conn)) { cmd.Parameters.AddRange(para); SqlDataAdapter sda = new SqlDataAdapter(cmd); sda.Fill(sd); } }
return sd; } #endregion #region 獲取Table返回DataTable public DataTable GetDataTable(string sql, params SqlParameter[] para) { DataTable dt = new DataTable(); List<string> sql2 = new List<string>(); for (int i = 0; i < para.Length; i++) { SqlParameter p = para[i]; sql2.Add(p.ParameterName); } using (var db = new BaseContext()) { SqlConnection conn = db.Database.Connection as SqlConnection; using (SqlCommand cmd = new SqlCommand(sql + " " + string.Join(",", sql2.ToArray()), conn)) { cmd.Parameters.AddRange(para); SqlDataAdapter sda = new SqlDataAdapter(cmd); sda.Fill(dt); return dt; } } } #endregion #region DataTable 轉換 public static List<Dictionary<string, object>> GetEntity(DataTable dt) { //返回json 需要引用json.net/Newtonsoft.Json 這兩個其中一個dll string json = JsonConvert.SerializeObject(dt); List<Dictionary<string, object>> rows = new List<Dictionary<string, object>>(); //表示數據量大於0 if (dt.Rows.Count > 0) { for (int i = 0; i < dt.Rows.Count; i++) { if (dt.Columns.Count > 0) { Dictionary<string, object> row = new Dictionary<string, object>(); ///獲取所有列名 item.ColumnsName foreach (DataColumn item in dt.Columns) { row.Add(item.ColumnName, dt.Rows[i][item.ColumnName]); } rows.Add(row); } } } return rows; } #endregion

EF執行存儲過程並且返回DataSet