Controlador MongoDB C #: ¿cómo almacenar _id como ObjectId pero asignar a la propiedad Id de cadena?
Tengo problemas para que mi modelo represente el de una entidadId
propiedad como una cadena, pero que sea generada automáticamente y representada internamente por MongoDb como nativoObjectId
.
class Account
{
public string Id { get; set; }
...
}
class AccountStore
{
static AccountStore()
{
BsonClassMap.RegisterClassMap<Account>(cm =>
{
cm.AutoMap();
cm.SetIgnoreExtraElements(true);
// map Id property here
});
}
public void Save(Account account)
{
_accounts.Save(account);
}
}
Para la linea// map Id property here
en el código anterior, he probado numerosas formas diferentes de configurar la asignación de Id y ninguna ha funcionado. Las formas en que lo intenté y las excepciones asociadas que se generan cuando llamo alSave
método, son:
// Exception: No IdGenerator found.
cm.IdMemberMap
.SetRepresentation(BsonType.ObjectId);
// Exception: No IdGenerator found.
cm.IdMemberMap
.SetRepresentation(BsonType.String);
// Exception: Unable to cast object of type 'MongoDB.Bson.ObjectId' to type 'System.String'.
cm.IdMemberMap
.SetRepresentation(BsonType.ObjectId)
.SetIdGenerator(ObjectIdGenerator.Instance);
// Exception: Unable to cast object of type 'MongoDB.Bson.ObjectId' to type 'System.String'.
cm.IdMemberMap
.SetRepresentation(BsonType.String)
.SetIdGenerator(ObjectIdGenerator.Instance);
// Exception: Unable to cast object of type 'MongoDB.Bson.ObjectId' to type 'System.String'.
cm.IdMemberMap
.SetIdGenerator(ObjectIdGenerator.Instance);
¿Qué estoy haciendo mal? ¿Pensé que este era un caso de uso estándar para el manejo de id?