首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用实体框架ExecuteStoreQuery返回DataTable

使用实体框架ExecuteStoreQuery返回DataTable
EN

Stack Overflow用户
提问于 2011-01-04 01:44:34
回答 8查看 83.7K关注 0票数 18

我使用的系统有许多需要显示的存储过程。为我的每个对象创建实体是不切实际的。

可以吗?我如何使用ExecuteStoreQuery返回DataTable

代码语言:javascript
复制
public ObjectResult<DataTable> MethodName(string fileSetName) {
using (var dataContext = new DataContext(_connectionString))
{
var returnDataTable = ((IObjectContextAdapter)dataContext).ObjectContext.ExecuteStoreQuery<DataTable>("SP_NAME","SP_PARAM");
return returnDataTable;
}
EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2011-01-04 01:45:59

不,我不认为这是可行的-实体框架是面向返回实体的,并不意味着返回DataTable对象。

如果您需要DataTable对象,请改用直接ADO.NET。

票数 12
EN

Stack Overflow用户

发布于 2012-07-02 19:03:45

是的,这是可能的,但它应该仅用于动态结果集或原始SQL。

代码语言:javascript
复制
public DataTable ExecuteStoreQuery(string commandText, params Object[] parameters)
{
    DataTable retVal = new DataTable();
    retVal = context.ExecuteStoreQuery<DataTable>(commandText, parameters).FirstOrDefault();
    return retVal;
}

编辑:使用经典的ADO.NET获取数据模型比使用实体框架更好,因为即使可以运行以下方法,也很可能无法使用DataTablecontext.ExecuteStoreQuery<DataTable>(commandText, parameters).FirstOrDefault();

ADO.NET示例:

代码语言:javascript
复制
public DataSet GetResultReport(int questionId)
{
    DataSet retVal = new DataSet();
    EntityConnection entityConn = (EntityConnection)context.Connection;
    SqlConnection sqlConn = (SqlConnection)entityConn.StoreConnection;
    SqlCommand cmdReport = new SqlCommand([YourSpName], sqlConn);
    SqlDataAdapter daReport = new SqlDataAdapter(cmdReport);
    using (cmdReport)
    {
        SqlParameter questionIdPrm = new SqlParameter("QuestionId", questionId);
        cmdReport.CommandType = CommandType.StoredProcedure;
        cmdReport.Parameters.Add(questionIdPrm);
        daReport.Fill(retVal);
    }
    return retVal;
}
票数 18
EN

Stack Overflow用户

发布于 2013-10-12 02:00:10

此方法使用实体框架中的连接字符串建立到MySQL数据库的ADO.NET连接。

代码语言:javascript
复制
using MySql.Data.MySqlClient;

public DataSet GetReportSummary( int RecordID )
{
    var context = new catalogEntities();

    DataSet ds = new DataSet();
    using ( MySqlConnection connection = new MySqlConnection( context.Database.Connection.ConnectionString ) )
    {
        using ( MySqlCommand cmd = new MySqlCommand( "ReportSummary", connection ) )
        {
            MySqlDataAdapter adapter = new MySqlDataAdapter( cmd );
            adapter.SelectCommand.CommandType = CommandType.StoredProcedure;
            adapter.SelectCommand.Parameters.Add( new MySqlParameter( "@ID", RecordID ) );
            adapter.Fill( ds );
        }
    }
    return ds;
}
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4586834

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档