#c# #mongodb
#c# #mongodb
Вопрос:
Мне было интересно, могу ли я читать и записывать необработанные pocos в mongodb
в руководстве по драйверам показано добавление каждого поля в bsondocument по одному за раз. Делает ли это bsonserialzer?
Я могу сам написать что-нибудь, чтобы отразить объект, но мне интересно, существует ли он уже.
Было бы неплохо работать с dynamic expandos
Ответ №1:
Да, официальный драйвер C # MongoDB 10gen поддерживает сериализацию и десериализацию POCO, например
MongoCollection<Thing> thingCollection = _db.GetCollection<Thing>("things");
Thing thing = col.FindAllAs<Thing>();
col.Insert(new Thing { Name = "Foo" });
Комментарии:
1. tx — он тоже использует expandos?
2. Нет, насколько я знаю, пока нет поддержки сериализации или десериализации динамических типов.
3. Поддерживает ли FindAll интерфейсы? т.Е. IThing thing = col. Найдите все<что>();
Ответ №2:
Я думаю, вы можете и должны использовать объекты POCO драйвера 10gen. Вы можете спроектировать свою модель POCO в полностью отдельной сборке без каких-либо ссылок на Mongo.Драйвер o Mongo.BSon и настройте точку входа вашего приложения для использования этой сборки, установив индексы, поля ingnore, дискриминаторы, столбцы ids и большое значение etc.
BsonClassMap.RegisterClassMap<Post>(cm =>
{
cm.AutoMap();
cm.SetIdMember(cm.GetMemberMap(c => c.IdPost));
cm.UnmapProperty(c => c.TimeStamp);
cm.UnmapProperty(c => c.DatePostedFormat);
cm.UnmapProperty(c => c.IdPostString);
cm.UnmapProperty(c => c.ForumAvatar);
cm.UnmapProperty(c => c.ForumAvatarAlt);
});