微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Azure 移动应用服务器不会在 GET 上返回 DBGeography

如何解决Azure 移动应用服务器不会在 GET 上返回 DBGeography

我的 Microsoft Azure 移动应用服务器实例很乐意将 DBGeography POINT() 存储为表列,该列包含在 JSON 数据中,确认已进行 POST。

我的“位置”数据对象:

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,"body": "Test body value"

}

如您所见,除“位置”外,其他所有列都被返回。

所以这个问题对于任何使用过 Microsoft Azure 移动应用服务的人来说可能更多,但是如何修改认的 Query() 方法以将 DBGeography 序列化为字符串?

解决方法

最终,你得到一个 IQueryable<T> ,然后它被 ASP.NET OData (v3) 系统或 Node.js 系统序列化(你不说你在使用哪个)。这里有两个问题 - IQueryable 返回什么,以及 oData 用它做什么。

由于它是 OData v3 端点,请尝试添加 ?$expand=location 以查看是否会扩展输出。阅读 the docs 中的 $expand 选项 - 第 5.1.3 节介绍了 $expand。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?