我的team
对象如下所示,我正在尝试仅使用select
语句获取成员。我遇到的问题是我得到的结果但是位置正在丢失,因为它没有映射到我的POCO对象,因为结果是“平坦的”。
我的team
对象如下所示:
{
id: 123,
name: "My Team",
members: [
{
id: 789,
name: "John Smith",
position:
{
id: 444,
name: "Manager"
}
},
{
id: 987,
name: "Jane Doe",
position:
{
id: 222,
name: "Director"
}
}
]
}
我的select
语句如下所示:
SELECT m.id, m.name, m.position.id as positionId, m.position.name as positionName
FROM Teams t
JOIN m IN t.members
WHERE t.id = 123
所以,当我运行上面的select语句时,我得到的是我在下面显示的内容,并且成员的对象形状与我的POCO对象不匹配,因此位置信息消失。
[
{
id: 789,
name: "John Smith",
positionId: 444,
positionName: "Manager"
},
{
id: 987,
name: "Jane Doe",
positionId: 222,
positionName: "Director"
}
我的C#POCO对象的形状与JSON对象匹配。所以我在Member对象中有一个Position对象。
如何让成员获得他们在数据库中的确切形状?
更新:
我将select
语句更改为以下内容,并且运行良好。它现在自动为我提供了POCO对象的确切形状。
SELECT m.id, m.name, m.position
FROM Teams t
JOIN m IN t.members
WHERE t.id = 123
答案 0 :(得分:0)
我认为我之后更喜欢使用简单的DTO并将其映射到您的POCO(手动或使用自动播放器)。将DB控制的格式与您的应用程序使用的格式分开似乎是合理的。
另一个选择是查看http://www.newtonsoft.com/json/help/html/CustomJsonConverter.htm,但我发现它比专门的DTO和映射更复杂。