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


個人想到的辦法是,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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM