1

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

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; }
}

此处的 Identity 字段包含一个 REST 友好的 ID,如/things/1,由 DB Id 制成。我不得不称它为与 Id 不同的东西,因为我正在使用 TranslateTo,DBThing如果字符串Id是,它会从 Thing 中断,""并且它会尝试映射到 int Id,例如当 aPOST发生时。

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

有人可以帮忙吗?

4

1 回答 1

1

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

于 2012-10-15T23:16:03.490 回答