Массовое с WCF Web Api для возврата динамических типов / Expandos? - PullRequest
2 голосов
/ 01 ноября 2011

Я хочу использовать Massive для доступа к данным через WCF Web Api и возвращать либо динамический, либо ExpandoObject / IEnumerable из моего веб-API.

У меня это в основном работает с использованием JsonNetMediaTypeFormatter, который использует Json.NETСериализация ExpandoObject, но все возвращается в виде пар ключ-значение в 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; }
}

Любые идеи о том, как получить динамический / ExpandoObject, отформатированный как конкретный объект, при возврате из WCF Web Api?

Ответы [ 2 ]

0 голосов
/ 03 сентября 2012

Я думаю, что вы берете Expando Query и переходите в WCF.Просто попробуйте выполнить итерацию или просто добавить ToList в свою коллекцию.Это преобразует ExpandoQuery в Expando Object Collection.И если вы 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.

Надеюсь, это поможет вам.Дайте мне знать, если что-нибудь еще будет.

0 голосов
/ 23 ноября 2011

Некоторые подробности о пользовательских форматерах Media Type для Web WCF:

http://geekswithblogs.net/michelotti/archive/2011/06/06/understanding-custom-wcf-web-api-media-type-processors-on-both.aspx

Я предполагаю, что он может использовать json.net или другую библиотеку для сериализации динамических объектов

http://blogs.clariusconsulting.net/kzu/using-json-net-for-text-and-binary-json-payloads-with-wcf-webapi/

Веб WCF

http://wcf.codeplex.com/wikipage?title=WCF%20HTTP

...