2013-10-30 48 views
0

我正在嘗試第http://forums.asp.net/t/1320587.aspx, 中提到的第一個解決方案將linq結果返回給數據集。 但在'mdb'之後我沒有得到'GetCommand'屬性。 錯誤說MedianEntities不包含'GetCommand'的定義。你錯過了一個裝配。將Linq結果返回給數據集 - 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和實體模型

+0

其他,我不SE e你將LINQ結果放入數據集的地方...... –

+0

oops錯過了一個單詞。更新了 – Ruby

回答

0

的DataContext和GetCommand是LINQ到SQL,你要使用LINQ到實體工作。

存在多個問題,您的實體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

+0

添加了參考&命名空間,但仍然是相同的錯誤。 – Ruby

+0

我更新了更多信息的答案... –

+0

謝謝。刪除Enumerable。我使用ADO.Net實體數據模型創建了一個edmx文件,並將其放在類庫'MedianContext'中。所以這將是一個dbcontext現在或datacontext。我嘗試了copyto..method,但是我發現上面的選擇更簡單得多。請告訴我,我該怎麼做才能這樣做。 – Ruby

相關問題