Ich habe ein Mongo-Dokument, das ein Array von eingebetteten Dokumenten enthält. Die eingebetteten Dokumente haben eine Eigenschaft namens "Id".
%Vor%Meine C # Mapping-Objekte sehen in etwa so aus (offensichtlich eine Vereinfachung)
%Vor%Wenn ich einen externen Code in die Datenbank schreibe, ändert der C # -Treiber den Namen der Inner.Id-Eigenschaft in _id. Wie umgehe ich diese automatische Umbenennung? Ich habe versucht, das Attribut [BsonElement ("Id")] für die Id-Eigenschaft zu verwenden, aber es hat nicht geholfen.
MongoDB-Dokumentation gibt explizit an :
Dokumente in MongoDB müssen einen Schlüssel,
_id
, haben, der sie eindeutig identifiziert.
Auf der anderen Seite sind C # -Eigenschaften normalerweise pascal-case und verwenden keine Präfixe, so dass Treiber-Designer offenbar entschieden , Zuordnung von Id
-Eigenschaft zu _id
-Datenbankattribut zu erzwingen.
Wenn Sie ein nicht _id
-Attribut binden möchten, das in MongoDB einfach nur Id
heißt, können Sie eine andere C # -Eigenschaft mit einem anderen Namen als Id
deklarieren der Fahrer stört das nicht:
Ich kann nichts sagen, also werde ich eine neue Antwort schreiben. Meine Notizen werden eine Menge Zeit für Leute sparen. Wenn Ihre _id in mongodb der Typ ObjectID ist, dann müssen Sie in C # einige weitere Attribute hinzufügen:
%Vor%Ich stimme Dans Antwort zu, aber in einigen Fällen, wenn Sie die "Id" -Eigenschaft nicht auf etwas anderes ändern dürfen, können Sie das Verhalten in Klassenmaps wie unten explizit ändern.
%Vor%Tags und Links c# mongodb mongodb-.net-driver