2011-06-01 72 views
0

我使用LINQ到實體動態檢索數據並創建了一個方法如下:如何在wcf中使用dyanamic linq?

public List<object> getDynamicList(string tablename, List<string> colnames) 
{ 
    try 
    { 
     var query = DynamicQueryable.getDynamicData(dbcontext, tablename, colnames); 
     List<object> objQueryable = new List<object>(); 
     object obj = query.AsQueryable(); 
     objQueryable.Add(obj); 
     return objQueryable; 
    } 
    catch (Exception ex) 
    { 
     HandleError(ex); 
    } 
} 

這種方法在WCF服務內部指LINQ樣品中給定的(動態類C:\程序文件(x86) \ Microsoft Visual Studio 10.0 \ Samples \ 1033)由MSVS2010。

當我通過tablename,動態列它但在客戶端,同時使用該方法,它會給出錯誤 - 服務器沒有提供有意義的答覆;這可能是由於合同不匹配,會話過早關閉或內部服務器錯誤造成的。 做wcf給與iqueryable返回類型的問題?

請建議......

+0

請發佈您看到的整個錯誤消息,包括錯誤消息和堆棧跟蹤。這將使您更容易理解您遇到的問題。 – 2011-06-01 05:53:26

回答

0

你應該看看WCF數據服務的OData又名服務

+0

無法轉換類型'DynamicClass1'以鍵入'System.Object'。 LINQ to Entities僅支持投射實體數據模型基元類型。 – Dev10 2011-06-01 13:36:03

0

嘗試使用返回ToList(),而不是因爲LINQ的使用Deffer加載的概念,它是指在客戶端時正在訪問ToList或Result時,它會嘗試連接到服務器以獲取結果,並且它將會失敗。當您使用這種類型的ORM時,建議您分離對象並將結果發送給客戶端。

+0

現在即時通訊錯誤爲 - 無法將類型'DynamicClass1'轉換爲鍵入'System.Object'。 LINQ to Entities僅支持投射實體數據模型基元類型。 – Dev10 2011-06-01 13:35:25