2

WCF Web Api でのデータ アクセスに Massive を使用し、Web API から動的または ExpandoObject / IEnumerable<ExpandoObject> を返したいと考えています。

これは基本的に、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 を具象オブジェクトのようにフォーマットする方法についてのアイデアはありますか?

4

2 に答える 2

0

Expando Query を使用して WCF に渡していると思います。繰り返しを行うか、コレクションに ToList を与えるだけです。これにより、ExpandoQuery が Expando オブジェクト コレクションに変換されます。そして、あなたがマップするPOCOの場合、顧客はあなたの質問のようにそこにいます。POCO オブジェクトで Select を指定します。

あなたのクエリが

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.

これがお役に立てば幸いです。さらに何かあれば教えてください。

于 2012-09-03T04:46:22.340 に答える