ich folgende POCO-Klasse haben:MongoDb.Driver 2.4 deserilization Datentyp zu ändern
class MyClass {
public Objectid _id {get;set;}
public string property1 {get;set;}
public string property2 {get;set;}
public int property3 {get;set;}
}
Das Objekt in der MongoDB Sammlung gespeichert. Die Daten haben die richtigen Datentypen in der resultierenden BSON:
property1: "SomeString"
property2: "12345"
property3: 98765
Wenn ich die Sammlung abzufragen versuchen:
var items = db.GetCollection<MyClass>("MyClass").AsQueryable().Select(x => x.property1 == "SomeString").ToList();
Ich erhalte eine Fehlermeldung, dass property2 anzeigt nicht deserialisiert werden: Kann kein deserialisieren 'String' von BsonType 'Int64'
Ich versuche, einen String-Wert aus dem Bson-Dokument in der DB zu einem String-Wert auf meinem Objekt zu deserialisieren.
Warum versucht der BsonSerializer, es in Dezimal zu konvertieren? In diesem Fall ist der Wert numerisch, das Feld ist jedoch in der Klasse als Zeichenfolge definiert, da der Wert normalerweise alphanumerisch ist.
Ich verwende das MongoDb.Driver v2.4-Paket in VS2013.
Sammlung 'MyClass' im Feld 'property2' enthält Werte vom Typ int64. Sie können den Datentyp mit Javascript direkt in der Mongo-Konsole aktualisieren. Ich denke, C# -Treiber unterstützt nicht die gleiche Funktion. – rnofenko