gpt4 book ai didi

mysql - Entity Framework MySql : DbGeometry not read from the DB

转载 作者:行者123 更新时间:2023-11-29 17:31:16 26 4
gpt4 key购买 nike

我有一个这个模型:

public partial class UserPosition
{
...
public DbGeometry Position { get; set; }
...
}

我创建这个对象并将其保存到 MySql DB(db 是我的 DBContext):

var pos = new UserPosition
{
...
Position = GeographyHelper.CreatePoint(request.Latitude, request.Longitude),
...
};

db.UserPositions.Add(pos);
db.SaveChanges();

GeographyHelper.CreatePoint:

/// <summary>
/// Creates a DbGeometry point from latitude and longitude values
/// </summary>
/// <param name="latitude"></param>
/// <param name="longitude"></param>
/// <returns></returns>
public static DbGeometry CreatePoint(double latitude, double longitude)
{
var text = string.Format(CultureInfo.InvariantCulture.NumberFormat, "POINT({0} {1})", longitude, latitude);

// 4326 is most common coordinate system used by GPS/Maps
return DbGeometry.PointFromText(text, 4326);
}

该值已完美保存到数据库:

POINT (19.038934 47.531)

但是当我从数据库读取值时,Position为空,其他字段都正常:

var rec = db.UserPositions.FirstOrDefault()

因为 ID 匹配,所以我得到了正确的记录。

为什么位置为空?

Visual Studio 2015、.NET 4.5.2、EntityFramework 6.2.0、MySql.Data.Entity.EF6 6.9.12、MySql 数据库版本:5.6.15。

最佳答案

这是全局化问题:小数点已保存到数据库,但在读取时无法解析相同的几何数据,因为全局化需要小数点逗号(对于 Double.TryParse()) 。快速的解决方案是在 web.config 中将全局化设置为 en-US,但如果您知道更好的解决方案,我会接受:)

<configuration>
<system.web>
<globalization uiCulture="en-US" culture="en-US"/>
...

关于mysql - Entity Framework MySql : DbGeometry not read from the DB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50621034/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com