У меня есть эта модель:
public partial class UserPosition
{
...
public DbGeometry Position { get; set; }
...
}
Я создаю этот объект и сохраняю его в БД MySql (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)
Но когда я читаю значение из БД, позиция становится пустой, остальные поля в порядке:
var rec = db.UserPositions.FirstOrDefault()
Я получаю правильную запись, потому что идентификатор совпадает.
Почему позиция пуста?
Visual Studio 2015, .NET 4.5.2, EntityFramework 6.2.0, MySql.Data.Entity.EF6 6.9.12, версия базы данных MySql: 5.6.15.