Драйвер MongoDB C # - как сохранить _id как ObjectId, но сопоставить со свойством string Id?
У меня проблемы с получением моей модели для представления сущностиId
свойство в виде строки, но оно автоматически генерируется и представляется внутри MongoDb как нативныйObjectId
.
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);
}
}
Для линии// map Id property here
В приведенном выше коде я пробовал множество различных способов настройки отображения Id, но ни один из них не сработал. Способы, которые я пробовал, и связанные исключения, которые вызываются, когда я вызываюSave
Метод, являются:
// 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);
Что я делаю неправильно? Я думал, что это стандартный вариант использования для обработки идентификаторов?