Мне нужно решить проблему с производительностью программного обеспечения, используя версию драйвера C # 2.7 для MongoDB (последняя версия).
Проблема связана с использованием устаревшего вызова API:
_client = new MongoClient( address );
_server = _client.GetServer(); // This is deprecated
_database = _server.GetDatabase( dbName ); // This is a MongoDatabase
, что приводит к:
var collection = database.GetCollection<T>( collectionName ); // This is MongoCollection<T>
Новый API выглядит следующим образом:
var database = _client.GetDatabase( dbName ); // This is IMongoDatabase
var collection = database.GetCollection<T>( collectionName ); // This is IMongoCollection<T>
Конкретное следствие (возможно, одно из них) состоит в том, что в устаревшем контексте доступ к collection.AsQueryable()
приводит к исключению при использовании для него предложений GroupBy
(«GroupBy не поддерживается»).Это, конечно, не относится к текущей версии.
Из этого может показаться, что это легко исправить, просто изменив способ получения объекта базы данных.
Но MongoCollection и IMongoCollection этого не делают.Предложите те же методы интерфейса, и этот пункт оказывает огромное влияние на программное обеспечение, над которым я работаю.И исправить это должным образом не входит в мои задачи сегодня или, по крайней мере, в краткосрочной перспективе.
Итак, я считаю возможным закодировать обходной путь:
Сохранить предыдущий устаревшийdatabase
версия и переименуйте ее obsoleteDatabase
(доступ к ней инкапсулирован).Затем предоставьте его другим частям кода, которые в нем нуждаются.
Создайте еще один database
с использованием текущего API 2.7 и извлеките запрашиваемые экземпляры из коллекций, полученных с помощью этой базы данных.
У меня следующие вопросы:
Какие еще подходы я могу рассмотреть?
Опасно ли использовать эти две версии экземпляра базы данных одновременно?(учитывая, что первый имеет доступ для чтения / записи, а новый останется только для чтения).
Примечание: конечно, все это на короткий срок.И я знаю, что устаревшие вызовы должны быть должным образом обновлены как можно скорее.