如何在包管理器中执行FluentMigrator迁移及数据库更新问题
解决FluentMigrator生成SQLite数据库后的表验证与迁移疑问
看起来你已经走完了FluentMigrator的大部分配置流程,但对生成的teste.db文件的作用有点困惑,我来帮你拆解清楚:
先明确:teste.db已经是迁移完成的SQLite数据库
当你执行这条迁移命令时:
dotnet fm migrate -p sqlite -c "Data Source=test.db" -a ".\bin\Debug\netcoreapp2.1\test.dll"
命令已经直接在指定的SQLite数据库文件里执行了你的迁移代码——也就是说,teste.db(应该是你命令里test.db的笔误)里面已经存在angularCore schema下的Pessoa表了,不需要额外的“更新数据库”操作。
怎么验证表是否创建成功?
你可以用任意SQLite可视化工具(比如DB Browser for SQLite、SQLite Studio)打开teste.db文件:
- 打开工具后加载这个.db文件
- 切换到“数据库结构”标签,就能找到
angularCore.Pessoa表,查看它的字段是否和你迁移代码里定义的一致
如果需要把迁移应用到其他数据库
1. 迁移到另一个SQLite数据库
只需要修改连接字符串里的Data Source为目标.db文件的路径,重新执行migrate命令就行:
dotnet fm migrate -p sqlite -c "Data Source=你的目标数据库.db" -a ".\bin\Debug\netcoreapp2.1\test.dll"
2. 迁移到非SQLite数据库(比如SQL Server、MySQL)
这时候你需要调整两个核心参数,并且不需要用到之前的teste.db文件:
- 把
-p参数改成对应数据库的provider名称(比如sqlserver、mysql) - 替换连接字符串为目标数据库的合法连接串
举个SQL Server的例子:
dotnet fm migrate -p sqlserver -c "Server=你的服务器地址;Database=目标数据库名;Trusted_Connection=True;" -a ".\bin\Debug\netcoreapp2.1\test.dll"
执行这条命令后,FluentMigrator会直接连接到目标数据库,执行迁移代码创建Pessoa表。
顺便说下之前的dotnet-tool错误
你一开始碰到的No executable found corresponding to the "dotnet-tool" command错误,主要是因为.NET Core 2.1早期版本不支持dotnet tool命令,后续你能成功执行应该是环境已经满足了SDK版本要求(比如升级到了2.1.300及以上版本)。
内容的提问来源于stack exchange,提问作者cura
相关产品推荐
相关产品推荐

