在现有的数据库优先多个 .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 测试