【问题标题】:Return Linq result to a dataset - GetCommand Is Not a Property将 Linq 结果返回到数据集 - GetCommand 不是属性
【发布时间】:2013-10-30 09:48:46
【问题描述】:

我正在尝试 - http://forums.asp.net/t/1320587.aspx 中提到的第一个解决方案, 将 linq 结果返回到数据集。 但是在“mdb”之后我没有得到“GetCommand”属性。 该错误表示 MedianEntities 不包含“GetCommand”的定义。您是否缺少程序集。

我还应该包括什么来解决这个问题。

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

使用 .Netframework 4.0 和实体模型

【问题讨论】:

  • 除了错误,我看不到您将 LINQ 结果放在数据集中的哪个位置...
  • 哎呀漏了一个字。更新

标签: c# asp.net .net-4.0 entity-model


【解决方案1】:

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

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

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

您可以在您的query 上使用CopyToDataTable<DataRow>() 来完成您需要的操作。 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

【讨论】:

  • 添加了引用和命名空间,但还是同样的错误。
  • 谢谢。删除了可枚举。我使用 ADO.Net 实体数据模型创建了一个 edmx 文件,并将其放入类库“MedianContext”中。那么这将是现在的 dbcontext 还是 datacontext。我尝试了 copyto.. 方法,但我发现上面选择的 .. 简单得多。请告诉我,我该怎么做才能走那条路。
  • 我添加了更多信息来解决您的问题,原始信息应该是您可以使用并找出解决方案的指针......
  • 在 sql 命令行,它给出了错误“此方法支持 LINQ to Entities 基础结构,不打算直接从您的代码中使用。”:( 但值得尝试
  • @Ruby 我认为你得到的错误是一个很好的提示,可以查看 GetCommand 以外的其他内容...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-01
  • 1970-01-01
  • 2015-02-08
  • 1970-01-01
  • 2019-06-25
相关资源
最近更新 更多