将参数映射到服务堆栈中的ignored属性?

时间:2012-10-15 22:26:12

标签: c# web-services rest servicestack

我有一个数据库实体,如: -

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

Id映射到数据库主键。然后,我有一个服务DTO,如: -

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

此处的标识字段包含一个REST友好ID,如/things/1,由数据库标识生成。我不得不把它称为与Id不同的东西,因为我正在使用TranslateTo,如果字符串DBThingId并且它试图映射到int Id,它会从Thing转为"" ,例如发生POST时。

我遇到的问题是我的路由[Route("/things/{Id}", "PUT")]无法说它无法在Thing上找到Id属性。如果我从课程中删除[IgnoreDataMember],它可以正常工作。我可以想象为什么会这样(在内部使用带有ServiceStack序列化的共享代码?)但我看不出如何解决这个问题。我不希望内部数据库数字ID序列化到Web服务,如果可能的话。

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

您可以使用int? Id如果它为null,则默认情况下不会在JSON / JSV序列化程序中进行序列化。