Linq-запрос для выполнения хранимой процедуры с типом возврата как DataTable - PullRequest
0 голосов
/ 31 мая 2018

Я пытаюсь получить результат как DataTable из хранимой процедуры, используя запрос Linq.Вот код, который я пытаюсь использовать:

_dbContext.Database.Sqlquery<DataTable>("dbo.uspGetOrdersDetails @orderID", orderParam);

, но результат пустчтобы получить данные

enter image description here

Просто хочу знать, возможно ли это с данными.

1 Ответ

0 голосов
/ 31 мая 2018

EntityFramework или LinqToSql не поддерживают это из коробки.Вместо этого вы можете использовать соединение своего контекста и заполнить таблицу данных с помощью Ado.Net.Вы можете найти образец здесь .Вы можете преобразовать решение, предоставленное в этом ответе, в метод расширения.Простая реализация:

public static class QueryExtensions
{
    public static DataTable ExecuteQuery(this DbContext db, string commandText, CommandType commandType, IEnumerable<SqlParameter> parameters)
    {
        var conn = db.Database.Connection;
        try
        {
            if (conn.State != ConnectionState.Open)
                conn.Open();
            using (var command = conn.CreateCommand())
            {
                command.CommandText = commandText;
                command.CommandType = commandType;
                command.Parameters.AddRange(parameters.ToArray());
                using (var reader = command.ExecuteReader())
                {
                    var dt = new DataTable();
                    dt.Load(reader);
                    return dt;
                }
            }
        }
        finally
        {
            if (conn.State != ConnectionState.Closed) 
                conn.Close();
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...