Учитывая этот класс:
public class Location
{
public Coordinates Geo { get; set; }
public Location()
{
Geo = new Coordinates();
}
public class Coordinates
{
public decimal Lat { get; set; }
public decimal Long { get; set; }
}
}
У меня есть набор геопространственных данных, например { Geo: "2d" }
. К сожалению, драйвер пытается сохранить координаты широты / долготы в виде строк, а не чисел, и я получаю сообщение об ошибке: Вт 15 марта 16:29:22 [conn8] вставка исключения database.locations 13026 значения гео должны быть числами: {Lat: "50.0853779", Long: "19.931276700000012"} 1 мс . Чтобы решить эту проблему, я настроил карту так:
BsonClassMap.RegisterClassMap<Location.Coordinates>(cm =>
{
cm.AutoMap();
cm.MapProperty(c => c.Lat).SetRepresentation(BsonType.Double);
cm.MapProperty(c => c.Long).SetRepresentation(BsonType.Double);
});
Обратите внимание, что нет BsonType.Decimal
и ничего подобного. В результате при попытке вызвать Save()
я получаю MongoDB.Bson.TruncationException
, что кажется логичным. Какие у меня варианты?