MongoDbContext для миграции данных в ядре EF?
В настоящее время я пытаюсь найти способ использовать EF core 2.2 для переноса данных. После прочтения инструкции по адресу: https://docs.microsoft.com/en-us/ef/core/managing-schemas/migrations/
Я понимаю, что он поддерживает только DbContext. На данный момент в моем проекте у меня есть mongoDBContext и IMongoDBContext для моей базы данных, и я не смог найти ни одного пакета, который бы их поддерживал. Я также пытаюсь использовать Microsoft.EntityFrameworkCore.Design
но это не помогает Есть ли для меня решение использовать mongoDbContext в качестве поставщика базы данных или какие-либо пакеты, которые поддерживают mongoDB в качестве поставщика базы данных?
Что касается моей попытки создать файл миграции, несмотря на отсутствие DbContext:
Из моего терминала
dotnet ef migrations add InitialCreate
ошибка
No DbContext was found in assembly '.Data'. Ensure that you're using the correct assembly and that the type is neither abstract nor generic.
Спасибо вам большое!
2 ответа
MongoDb - это хранилище без схемы.
Entityframework Migrations используется для обновления схемы таблиц. Да, миграция также может запускать обновление / удаление / вставку части миграции, но только потому, что Sql зависит от схемы.
Кроме того, EF не поддерживает MongoDb, так как mongo db не использует sql, mongo db имеет свой собственный API / язык.
Да, последние обновления EFCore поддерживают CosmosDb, но только потому, что CosmosDB может говорить sql
Подводить итоги.
- Если вам нужно изменить схему, возможно, ваш дизайн MongoDb неправильный.
- Если вы хотите поговорить с MongoDb, используйте https://docs.mongodb.com/ecosystem/drivers/csharp/
- Если вы не знакомы с MongoDb, используйте то, что вам знакомо
Да, MongoDB — это хранилище без схемы. Но решение всегда имеет какую-то схему в типизированных/динамических объектах POCO/DDD и связанной логике предметной области. И вы можете изменить эти контракты с течением времени. Таким образом, с Mongo у нас есть возможность выполнять два типа миграции: сценарии обновления (как в СУБД) или миграция документов «на лету», когда документы используются. Вы определенно можете использовать свою MongoDB без изменений в существующих документах в таких проектах, как коллекции метрик и данных устройств IoT или высокодинамичных объектов, но это не всегда так.