2015-02-02 14 views
6

Sto lavorando con l'ultima C# driver for MongoDB. So che ora è beta, ma penso che sto facendo alcune cose basilari.Metodo SetRepresentation() mancante in C# MongoDB.Driver 2.0.0-beta1

Qual è il mio problema: Sto cercando di impostare la rappresentanza per il mio campo ID per ObjectId invece di string come esso è descritto in documentation:

BsonClassMap.RegisterClassMap<Entity>(cm => 
{ 
    cm.AutoMap(); 
    cm.IdMemberMap.SetRepresentation(BsonType.ObjectId); 
}); 

Ma non posso farlo perché il metodo SetRepresentation() non esiste . E non riesco a trovare nulla di simile.

Quindi mi chiedo, questo metodo è stato rimosso? C'è un altro modo per impostare la rappresentazione oltre agli attributi? Non posso usare gli attributi perché non ho accesso alla classe Entity, sto lavorando con la classe derivata.

Grazie in anticipo!

+0

Questo metodo esiste nella versione 1.9.2.235 – Disposer

+0

lo so, ma perché non è lì in 2.0.0? Sto usando 2.0.0 per le sue funzionalità asincrone. – Grant

+0

È interessante, hanno anche rimosso l'attributo [BsonRepresentation] – Disposer

risposta

14

Ho parlato con lo sviluppatore del conducente e ha chiarito la situazione:

Abbiamo portato tutte queste opzioni nelle serializzatori stessi, quindi, in questo caso, ti consigliamo di impostare il serializzatore. IdMemberMap.SetSerializer (new StringSerializer (BsonType.ObjectId)); // È una stringa che verrà rappresentata come ObjectId nel database.

+0

non funziona per me (driver 2.2) – Soren

+0

grazie per aver postato questo , dovrebbero davvero aggiornare la loro documentazione !! – Phil

3

questo funziona per me (v2.2)

cm.MapIdMember(c => c.Id) 
    .SetSerializer(new StringSerializer(BsonType.ObjectId)) 
    .SetIdGenerator(StringObjectIdGenerator.Instance); 

è rappresentare objectId nel database (non stringa)

"_id" : ObjectId("56715ebddb6986202816e566"), 
Problemi correlati