私は次のような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サービスにシリアル化したくありません。
誰か助けてもらえますか?