簡體   English   中英

Linq查詢執行返回類型為DataTable的存儲過程

[英]Linq query to execute stored procedure with return type as DataTable

我正在嘗試使用Linq查詢從存儲過程中將結果作為DataTable獲得。 這是我要使用的代碼:

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

但結果是空的

屏幕快照,返回類型為DataTable

如果我保留為viewmodel,則可以獲取數據

在此處輸入圖片說明

只想知道,datatable是否可能。

EntityFramework或LinqToSql不支持此功能。 相反,您可以使用上下文的連接並使用Ado.Net填充DataTable。 您可以在此處找到示例。 您可以將該答案中提供的解決方案轉換為擴展方法。 一個簡單的實現:

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();
        }
    }
}

暫無
暫無

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

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