在现有的数据库优先多个 .NET Core 项目解决方案中迁移到代码优先的最佳方法是啥?

Posted

技术标签:

【中文标题】在现有的数据库优先多个 .NET Core 项目解决方案中迁移到代码优先的最佳方法是啥?【英文标题】:What is the best approach for migrate to code-first in an existing database-first multiple .NET Core projects solution?在现有的数据库优先多个 .NET Core 项目解决方案中迁移到代码优先的最佳方法是什么? 【发布时间】:2021-10-06 23:42:14 【问题描述】:

有一个解决方案包含多个具有 DDD 架构的 .NET Core 数据库优先项目。 EF Core 为所有项目搭建了 4 个不同的数据库。由于我们还没有版本控制和发布控制,控制项目和数据库版本的最佳方法是什么?

是否可以切换到代码优先迁移以保持数据库更改为版本?

目前,所有项目都在 TFS git 存储库中,因此我们有提交和推送的历史记录。

【问题讨论】:

【参考方案1】:

根据Microsoft,答案是肯定的!您可以首先通过dotnet ef dbcontext scaffold 命令(.NET 调用,reverse engineering)搭建数据库。

这里发生的事情是这样的:

    脚手架 Db 将生成 DbContext 和相关模型到您执行命令的目录(除非您在命令参数中指定您希望它结束​​的位置) 您可以将模型和 DbContext 移动并分类到它们假定的相应位置。 修复命名空间(如果需要) 完成!不要忘记将 DbContext 注入到您的 DI 管道中

我个人在我的团队很小的时候就这样做了,您所要做的就是在 dotnet ef 和 DbContext 本身中包含包含带有 -p arg 的 DbContext 的项目(如果包含 DbContext 的项目包含许多 DbContexts)通过-c(我想 DDD 不会要求你-c

类似的东西。 dotnet ef migrations add 等其他命令也是如此(老实说,几乎每个 dotnet ef 命令都一样)

dotnet ef database update -c NozomiDbContext -v -p ../Nozomi.Repo

【讨论】:

以上是关于在现有的数据库优先多个 .NET Core 项目解决方案中迁移到代码优先的最佳方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章

如何将 .net core Web API 项目添加到现有的 .NET core (3.1) Web Application 项目中?

如何在现有的基于 Storyboard 的项目中设置 @EnvironmentObject?

如何在现有的 ios 测试项目中启用 xcode 7 UI 测试

如何在现有的rails模型中使用mongoid来种植数据?

如何在现有的 Xcode 项目中安装 phoneGap [关闭]

SWIFTUI 警告 imagePickerController 几乎匹配 - 仅在现有的 swift 项目文件中发生