我正在尝试使用Linq查询从存储过程中获取结果DataTable
。这是我尝试使用的代码:
_dbContext.Database.Sqlquery<DataTable>("dbo.uspGetOrdersDetails @orderID", orderParam);
但结果是空的
如果我保留为viewmodel,那么我就能获得数据
只想知道,数据表是否可行。
答案 0 :(得分:0)
EntityFramework或LinqToSql不支持开箱即用。相反,您可以使用上下文的连接并使用Ado.Net填充您的DataTable。您可以找到示例here。您可以将该答案中提供的解决方案转换为扩展方法。一个简单的实现:
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();
}
}
}