[英]Linq query to execute stored procedure with return type as DataTable
我正在嘗試使用Linq查詢從存儲過程中將結果作為DataTable
獲得。 這是我要使用的代碼:
_dbContext.Database.Sqlquery<DataTable>("dbo.uspGetOrdersDetails @orderID", orderParam);
但結果是空的
如果我保留為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.