我有一个数据库实体,如: -
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,如果字符串DBThing
是Id
并且它试图映射到int Id,它会从Thing转为""
,例如发生POST
时。
我遇到的问题是我的路由[Route("/things/{Id}", "PUT")]
无法说它无法在Thing上找到Id属性。如果我从课程中删除[IgnoreDataMember]
,它可以正常工作。我可以想象为什么会这样(在内部使用带有ServiceStack序列化的共享代码?)但我看不出如何解决这个问题。我不希望内部数据库数字ID序列化到Web服务,如果可能的话。
有人可以帮忙吗?
答案 0 :(得分:1)
您可以使用int? Id
如果它为null,则默认情况下不会在JSON / JSV序列化程序中进行序列化。