Envisager cette classe :
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; }
}
}
J'ai un index géospatial sur l'ensemble des collections, comme suit { Geo: "2d" }
. Malheureusement, le pilote essaie de stocker les coordonnées lat/lon sous forme de chaînes, au lieu de nombres, et j'obtiens l'erreur suivante Tue Mar 15 16:29:22 [conn8] insert database.locations exception 13026 geo values have to be numbers : { Lat : "50.0853779", Long : "19.931276700000012" } 1ms . Pour pallier ce problème, j'ai établi une carte comme suit :
BsonClassMap.RegisterClassMap<Location.Coordinates>(cm =>
{
cm.AutoMap();
cm.MapProperty(c => c.Lat).SetRepresentation(BsonType.Double);
cm.MapProperty(c => c.Long).SetRepresentation(BsonType.Double);
});
Remarquez qu'il n'y a pas de BsonType.Decimal
ni rien de tel. Dans l'effet, en essayant d'appeler Save()
Je reçois un MongoDB.Bson.TruncationException
ce qui semble logique. Quelles sont mes options ?