0

I'm trying the first solution mentioned in - http://forums.asp.net/t/1320587.aspx , to return the linq result to a dataset. But I dont get the 'GetCommand' property after 'mdb'. The error says MedianEntities does not contain a definition for 'GetCommand'. Are you missing an assembly.

What else should I include to fix this.

public DataSet GetAllRecords()
  {
    DataSet ds = new DataSet();
    MEDIANEntities mdb = new MEDIANEntities();
    var query = (from j in mdb.tblCountries 
                 orderby j.CountryName ascending select j);
    SqlCommand cmd = (SqlCommand)mdb.GetCommand(query);     //error here
    SqlDataAdapter da = new SqlDataAdapter(cmd);
    da.Fill(ds);
    return ds;
  }

Using .Netframework 4.0 and Entity Model

4

1 回答 1

0

DataContext 和 GetCommand 用于 LINQ-To-SQL,您想使用 LINQ-To-Entity。

有多个问题,您的实体 MEDIANEntities 可能是 DbContext,GetCommand 在 DataContext 类上。

另一个问题是您的“查询”不是 IQueryable,需要从查询中删除您的 .AsEnumerable() 。

您可以使用CopyToDataTable<DataRow>()on yourquery来完成您需要的工作。http://msdn.microsoft.com/en-us/library/bb396189.aspx

另一个选项,它应该可以工作,但可能是 hacky,因为您将 DataContext (linq-to-sql) 与 (linq-to-entity) 混合。像这样的东西:

                    using (DataContext ctx = new DataContext(mdb.Database.Connection))
                    {
                        DataSet ds = new DataSet();
                        var query = (from j in mdb.tblCountries 
                                     orderby j.CountryName ascending
                                     select j);
                        SqlCommand cmd = (SqlCommand)ctx.GetCommand(query);
                        SqlDataAdapter da = new SqlDataAdapter(cmd);
                        da.Fill(ds);
                        return ds;
                    }

有关 GetCommand 的更多信息:

DataContext.GetCommand

命名空间:System.Data.Linq

程序集:System.Data.Linq(在 System.Data.Linq.dll 中)

http://msdn.microsoft.com/en-us/library/system.data.linq.datacontext.getcommand.aspx

于 2013-10-30T09:59:52.433 回答