0

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 とエンティティ モデルの使用

4

1 に答える 1

0

DataContext と GetCommand は LINQ-To-SQL 用であり、LINQ-To-Entity で作業したいと考えています。

複数の問題があります。エンティティ MEDIANEntities は DbContext である可能性があり、GetCommand は DataContext クラスにあります。

別の問題は、「クエリ」が IQueryable ではないことです。クエリから .AsEnumerable() を削除する必要があります。

CopyToDataTable<DataRow>()代わりにonを使用して、query必要なことを達成できます。http://msdn.microsoft.com/en-us/library/bb396189.aspx

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 に答える