2011-11-01 53 views
2

我想使用Massive進行WCF Web Api的數據訪問,並從我的web api返回動態或ExpandoObject/IEnumerable <ExpandoObject>。使用WCF Web Api大量返回動態類型/ Expandos?

我有這個基本上都採用它使用Json.NET的ExpandoObject序列化JsonNetMediaTypeFormatter工作,但一切都被返回在JSON鍵值對,如:

[ 
    { 
     "Key":"ID", 
     "Value":"1000" 
    }, 
    { 
     "Key":"FirstName", 
     "Value":"John" 
    }, 
    { 
     "Key":"LastName", 
     "Value":"Smith" 
    } 
] 

但是,我要的是:

[ 
    { 
     "ID":"1000", 
     "FirstName":"John", 
     "LastName":"Smith", 
    } 
] 

正如如果我使用具體類型,如:

public class Customer 
{ 
    public int ID { get; set; } 
    public string FirstName { get; set; } 
    public string LastName { get; set; } 
} 

關於如何從WCF Web Api返回時獲取動態/ ExpandoObject格式化爲具體對象的任何想法?

+0

沒關係,我通過清除現有的格式化程序集來實現它。我以爲我已經這樣做了,但是我設置了一個斷點來查看它是否打到我的JsonNetMediaTypeFormatter,而不是。試了一遍,現在它工作。 – anderly

+0

你能發佈你使用的代碼嗎? –

+0

yeh同上我也可以有一個副本...即時嘗試執行此操作 – War

回答

0

我想你正在接受Expando Query並傳遞給WCF。只是嘗試做迭代或只是給您的收藏ToList。這會將ExpandoQuery轉換爲Expando對象集合。如果你是POCO來繪製地圖,就像你的問題中的客戶那樣。給你一個選擇POCO對象。

一樣,如果您的查詢

Dynamic CustomerTable = DynamicObject("ConnectionString","TableName","PrimeryKey"); 

CustomerTable.All() //This will be ExpandoQuery 

CustomerTable.All().Select(c=> new Customer() {FistName = c.FirstName, LastName = c.LastName}); // This will give collection of customer object. Just pass this as DTO to your WCF service. 

我希望這會幫助你。讓我知道如果有更進一步的東西存在。