【发布时间】:2012-05-02 12:19:55
【问题描述】:
如何修改以下方法以返回 List
public static DataTable ExecuteStoredProcedure(ObjectContext db, string storedProcedureName, IEnumerable<SqlParameter> parameters)
{
var entityConnection = (EntityConnection) db.Connection;
var conn = entityConnection.StoreConnection;
var initialState = conn.State;
var dt = new DataTable();
try
{
if (initialState != ConnectionState.Open)
conn.Open();
using (var cmd = conn.CreateCommand())
{
cmd.CommandText = storedProcedureName;
cmd.CommandType = CommandType.StoredProcedure;
foreach (var parameter in parameters)
{
cmd.Parameters.Add(parameter);
}
using (var reader = cmd.ExecuteReader())
{
dt.Load(reader);
reader.Close();
}
}
}
catch (Exception ex)
{
throw ex;
}
finally
{
if (initialState != ConnectionState.Open)
conn.Close();
}
return dt;
}
【问题讨论】:
-
我已经在谷歌上搜索了一段时间,我很震惊 EF 不支持这么简单的需求。感谢您的代码。不幸的是,“context.Execute*()”方法并没有真正达到相同的目的,也不会替换您在答案中的代码。如果有人好奇,这里有一篇文章:geekswithblogs.net/rgupta/archive/2010/06/23/… 在这里找到它stackoverflow.com/questions/915329/…
标签: entity-framework datatable dataset sqldatareader