Pflegen Sie den Id-Eigenschaftsnamen im eingebetteten Dokument mit dem mongo C # -Treiber

8

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.

    
Joel Harris 29.06.2011, 16:07
quelle

3 Antworten

11

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:

%Vor%     
Dan Abramov 29.06.2011, 16:20
quelle
1

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%     
Astemir Almov 07.06.2016 11:02
quelle
0

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%     
Narendra Chava 11.08.2017 18:34
quelle

Tags und Links