Ich bin neu in der Verwendung von mongo db in C #, aber ich versuche, große Datenbank in Mongo db zu importieren. MyDb besteht aus Entitäten mit nur einfachen Parametern Id, Body, Title Tags.
Dies ist ein Beispiel für eine Entität in Mongo.
%Vor%Dies ist meine Klasse von MongoEntity in C #
%Vor%Dies ist mein Code in der Hauptmethode
%Vor%Wenn ich diesen Code ausführe, kann ich einige Daten sehen, aber ich habe eine Ausnahme "String aus BsonType Int32 kann nicht deserialisiert werden." Ich denke, dass eine Eigenschaft in der Datenbank als int dargestellt wird, aber ich weiß nicht, wie ich damit umgehen soll? Wie kommt es, dass eine Eigenschaft in einer Entität int ist und dieselbe Eigenschaft in einem anderen Objekt eine Zeichenfolge ist? Was muss ich tun, um die gesamte Datenbank zu lesen?
Ja, String
-Eigenschaft in C # -Objekt hat Int32
-Wert in Mongo-Speicher, Sie haben also eine Ausnahme während der Serialisierung (siehe Code für MongoDB.Bson.Serialization.Serializers.BsonStringSerializer
Klasse).
1) Sie können einen eigenen Serializer definieren, der Int32
-Werte sowohl in die String-Eigenschaft als auch in String
one deserialisiert. Hier ist es:
Markieren Sie dann mit diesem Serializer die notwendigen Eigenschaften (die in MongoDB verschiedene Typen haben), zum Beispiel:
%Vor%Auch ich habe eine sehr ähnliche Frage hier gefunden: Deserialisierungsfeld, wenn der Typ mit dem MongoDb csharp-Treiber geändert wird
2) Der zweite Ansatz besteht darin, Ihre Daten im Speicher zu "normalisieren": Konvertieren Sie alle Ganzzahl-Feldwerte in Zeichenfolgen. Daher sollten Sie das Feld $type
von 16 (32-Bit-Ganzzahl) auf 2 (Zeichenfolge) ändern. Siehe BSON-Typen . Machen wir es für body
field:
Dies funktioniert in C # Mongo 2.0 +
%Vor%Und Sie können es wie
verwenden %Vor%