Returning a DataTable using Entity Framework ExecuteStoreQuery

前端 未结 8 1417
清酒与你
清酒与你 2020-12-09 04:28

I am working with a system that has many stored procedures that need to be displayed. Creating entities for each of my objects is not practical.

Is it possible and

8条回答
  •  半阙折子戏
    2020-12-09 05:13

    Yes it's possible, but it should be used for just dynamic result-set or raw SQL.

    public DataTable ExecuteStoreQuery(string commandText, params Object[] parameters)
    {
        DataTable retVal = new DataTable();
        retVal = context.ExecuteStoreQuery(commandText, parameters).FirstOrDefault();
        return retVal;
    }
    

    Edit: It's better to use classical ADO.NET to get the data model rather than using Entity Framework because most probably you cannot use DataTable even if you can run the method: context.ExecuteStoreQuery(commandText, parameters).FirstOrDefault();

    ADO.NET Example:

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

提交回复
热议问题