1

私は次のようなDBエンティティを持っています:-

public class DBThing
{
    public int Id { get; set; }
    public string Name { get; set; }
}

IdはDB主キーにマップされます。次に、次のようなサービスDTOがあります:-

public class Thing
{
    [IgnoreDataMember]
    public int Id { get; set; }
    public string Identity { get; set; }
    public string Name { get; set; }
}

ここのIDフィールドには、DBID/things/1から作成されたのようなRESTフレンドリIDが含まれています。私はTranslateToを使用しているので、これをIdとは異なるものと呼ぶ必要がありました。これはDBThing、文字列Idが存在する場合にThingから終了""し、aが発生した場合などにintIdにマップしようとするためPOSTです。

[Route("/things/{Id}", "PUT")]私が抱えている問題は、ThingでIdプロパティが見つからないと言ってルートが失敗することです。[IgnoreDataMember]クラスから削除すると、正常に機能します。なぜこれが起こるのか想像できますが(ServiceStackシリアル化で内部的に共有コードを使用しますか?)、これを修正する方法がわかりません。可能であれば、内部DB数値IDをWebサービスにシリアル化したくありません。

誰か助けてもらえますか?

4

1 に答える 1

1

int? Idnullの場合、JSON/JSVシリアライザーでデフォルトでシリアル化されないaを使用できます。

于 2012-10-15T23:16:03.490 に答える