2011-11-01 47 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. 

我希望这会帮助你。让我知道如果有更进一步的东西存在。