簡體   English   中英

實體框架調用存儲過程

[英]Entity Framework calling stored procedure

我有一個要從實體框架調用的存儲過程。 結果中返回了三個表。 存儲過程接受兩個參數, UserIdBlogId 我需要打開數據庫和command.ExecuteReader嗎? 實體框架可以處理多個數據讀取嗎?

public List<Models.BlogInfo> GetBlogListing(int UserId, int BlogId)
{
    using (var db = new Entities())
    {
        using (DbContextTransaction dbTran = db.Database.BeginTransaction())
        {
            ResultStatus resultStatus = new ResultStatus();

            try
            {
                var cmd = db.Database.Connection.CreateCommand();
                cmd.CommandText = "[coi].[usp_Public_Select_GetPanelBlog]";

                SqlParameter paramMeetingId = new SqlParameter("@UserId", UserId);
                SqlParameter paramGroupId = new SqlParameter("@BlogId", BlogId);

                Database.OpenConnection();

                using (var result = command.ExecuteReader())
                {
                }
            }
            catch (Exception ex)
            {
                dbTran.Rollback();
            }
        }
    }
}

你能試試這個嗎?

 using (var context = new TestEntities())
        {
            using (var con = context.Database.GetDbConnection())
            {
                try
                {
                    if (con.State != ConnectionState.Open)
                        con.Open();

                    using (var cmd = con.CreateCommand())
                    {
                        //postgres
                        cmd.CommandText = "SELECT * FROM \"USP_Test\"()";

                        using (System.Data.Common.DbDataReader dr = 
                       cmd.ExecuteReader())
                        {
                            var tb = new DataTable();
                            tb.Load(dr);
                            var json = JsonConvert.SerializeObject(tb);

                            var result = JsonConvert.DeserializeObject<List<TestClass>>(json);

                            return result;
                        }
                    }
                }
                catch (Exception exc)
                {
                    throw exc;
                }
                finally
                {
                    if (con.State != ConnectionState.Closed)
                        con.Close();
                }
            }
        }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM