【发布时间】:2021-03-05 00:23:12
【问题描述】:
我的 Microsoft Azure 移动应用服务器实例很乐意将 DBGeography POINT() 存储为表列,该列包含在确认已进行 POST 的 JSON 数据中。
我的“位置”数据对象:
public DbGeography Location { get; set; }
[NotMapped]
public double Longitude { get; set; }
[NotMapped]
public double Latitude { get; set; }
我的控制器:
public async Task<IHttpActionResult> PostI4Item([FromBody] IslandFourEntity item)
{
var coordinates = DbGeography.FromText($"POINT({item.Longitude} {item.Latitude})");
item.Location = coordinates;
IslandFourEntity current = await InsertAsync(item);
return CreatedAtRoute("Tables", new { id = current.Id }, current);
}
“POST”请求后的邮递员响应:
{
"body": "Test body value",
"subject": "Test subject value",
"type": "type",
"location": {
"geography": {
"coordinateSystemId": 4326,
"wellKnownText": "POINT (172.590401 -43.539994)"
}
},
"longitude": 172.590401,
"latitude": -43.539994,
"id": "58542f5ee84d4867ae1f3d2c3b098b1b",
"version": "AAAAAAAAD6I=",
"createdAt": "2021-03-05T00:16:12.292Z",
"updatedAt": "2021-03-05T00:16:12.731Z",
"deleted": false
}
但是,如果您获取所有表值或仅一个单独的项目,则包含 DBGeography 项目的列不包含在其中(尽管肯定保存在数据库中。)
该记录的默认 GET 响应:
{
"deleted": false,
"updatedAt": "2021-03-05T00:16:12.731Z",
"createdAt": "2021-03-05T00:16:12.292Z",
"version": "AAAAAAAAD6I=",
"id": "58542f5ee84d4867ae1f3d2c3b098b1b",
"type": "type",
"subject": "Test subject value",
"body": "Test body value"
}
如您所见,除“位置”外,所有其他列均已返回。
所以这个问题可能更适合那些有过 Microsoft Azure 移动应用服务经验的人,但是如何修改默认的 Query() 方法以将 DBGeography 序列化为字符串?
【问题讨论】:
标签: c# azure asp.net-web-api azure-mobile-services