目前,我正在尝试找到一种使用 EF core 2.2 进行数据迁移的方法。阅读说明后:https://learn.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.
非常感谢!
MongoDb 是无模式存储。
实体框架迁移用于更新表的架构。是的,迁移也可以运行更新/删除/插入部分迁移,但这只是因为 Sql 依赖于架构。
此外,EF不支持MongoDb,因为mongo db不使用sql,mongo db有自己的api/语言。
是的,EFCore 的最新更新支持 CosmosDb,但这只是因为 CosmosDB 可以谈论 sql
综上所述。
- 如果您需要修改模式,则可能是您的MongoDb设计错误。
- 如果您想与MongoDb交谈,请使用 https://docs.mongodb.com/ecosystem/drivers/csharp/
- 如果您不熟悉MongoDb,请使用您熟悉的内容
是的,Mongodb 是无 shema 的存储。但是,解决方案始终在 POCO/DDD 类型/动态对象和相关域逻辑中具有某种架构。随着时间的推移,您可能会更改这些合同。因此,使用Mongo,我们能够执行两种类型的迁移:升级脚本(如RDBMS)或使用文档时的动态文档迁移。您绝对可以使用MongoDB,而无需更改项目中的现有文档,例如指标和物联网设备数据的集合或高度动态的对象,但情况并非总是如此。