Задать вопрос
@saxer

Как в Entity Framework заполнить DataSet из хранимой процедуры?

У меня в базе определено несколько хранимых процедур. Я могу получить данные из хранимых процедур которые возвращают только одну таблицу:
using (var context = new UmkCmsContext())
            {
var dt = new DataTable();
                    ProductList = new List<ProductListNode>();
                    #region ProcedureData
                    var conn = context.Database.Connection;
                    var connectionState = conn.State;
                    if (connectionState != ConnectionState.Open)
                        conn.Open();
                    using (var cmd = conn.CreateCommand())
                    {
                        cmd.CommandText = "GetProductsInCategory";
                        cmd.CommandType = CommandType.StoredProcedure;
                        cmd.Parameters.Add(new SqlParameter("@host", _httpContext.Request.Url.Host));
                        cmd.Parameters.Add(new SqlParameter("@catalogIdentifer", catalogIdentifer));
                        cmd.Parameters.Add(new SqlParameter("@categoryIdentifer", categoryIdentifer));
                        using (var reader = cmd.ExecuteReader())
                        {
                            dt.Load(reader);
                        }
                    }
                    #endregion
}


Но если хранимая процедура возвращает несколько таблиц, у меня начинаются проблемы. На локальном сервере я могу их получить таким образом:
var connStr = context.Database.Connection.ConnectionString;
using (var context = new UmkCmsContext())
{
var dsMain = new DataSet();
                using (var conn = new SqlConnection(connStr))
                {
                    var sqlComm = new SqlCommand("GetProductViewModel", conn);
                    sqlComm.Parameters.AddWithValue("@host", Request.Url.Host);
                    sqlComm.Parameters.AddWithValue("@productIdentifer", productIdentifer);
                    sqlComm.CommandType = CommandType.StoredProcedure;
                    var da = new SqlDataAdapter { SelectCommand = sqlComm };
                    da.Fill(dsMain);
                }
}

Но при публикации сайта на хостинге(Azure) такой способ е работает т.к. ConnectionString не содержит пароля.
Мне важно получить данные в "сыром" виде(без создания объекта и его заполнения).
Кто нибудь сталкивался с такой проблемой?
  • Вопрос задан
  • 440 просмотров
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы