могу ли я использовать pocos с драйвером mongodb c #

#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);
        });