Rem*_*yth 9 .net fluent-migrator
我必须遗漏一些非常基本的东西.
我正在研究一个遗留项目,我正在尝试将FluentMigrator引入混合,因为我有一些有趣的数据库更改和数据迁移,我认为使用此工具会更容易.
对于初始迁移,我只想按原样将数据库升级到当前的生产版本.为了简化初始迁移,我编写了SQL Server 2008数据库脚本,并且迁移将脚本化命令作为一系列SQL命令执行.
为了测试它,我创建了一个完全空的数据库,并尝试使用以下命令行运行它:
> migrate -a "C:\My\Project\Path\bin\debug\Rds.MyProjName.DBMigrations.dll"
-db SqlServer2008 -conn "Data Source=.\SQLEXPRESS2008;Initial Catalog=myNewDbName;
Integrated Security=SSPI" -version=20100901000000
Run Code Online (Sandbox Code Playgroud)
指定的版本是第一个迁移类的Migration属性的时间戳.
在命令行,一切似乎都运行正常 - 整个脚本缩放,结束时:
-- CreateProductionDbCircaSep2010: migrated
Run Code Online (Sandbox Code Playgroud)
但是,当我看一下数据库时,它仍然是空的.绝对没有什么在那里.My Up方法如下所示:
public override void Up()
{
var cmds = LoadEmbeddedResources
.GetEmbeddedResource("scripted_db_2010-09-01.sql")
.AsString()
.ParseCommands();
foreach (var c in cmds) {
Execute.Sql(c);
}
CreateReferenceData();
}
Run Code Online (Sandbox Code Playgroud)
(仅供参考,我正在解析脚本而不是按原样运行它,因为我开始使用Migrator.Net之前发现它已经死了,而且已经设置好了.)
任何人都可以帮我一把吗?它几乎看起来像是一个事务没有提交,或者某个命令行选项让迁移执行干运行已打开,但我看不到它......
编辑:我尝试过的其他事情
为了确认连接字符串是否正在使用我期望的数据库,我重命名了数据库,然后按预期出现了登录错误.
为了进一步测试,我减少了脚本的长度,并尝试使用它来执行它
public override void Up()
{
Execute.Script(@"..\Resources\test.sql");
}
Run Code Online (Sandbox Code Playgroud)
而不是逐个命令,但我得到相同的结果.这是该测试的输出(注意,我编辑了pathes等):
C:\My\Project\Path\FluentMigrator.Net\ >migrate -a "C:\My\Project\Path\bin\debug
\My.Project.DBMigrations.dll" -db SqlServer2008 -conn "Data Source=.\SQLEXPRESS2
008;Initial Catalog=myNewDbName;Integrated Security=SSPI" -version=2010090100000
0
Using Database SqlServer2008 and Connection String Data Source=.\SQLEXPRESS2008;
Initial Catalog=myNewDbName;Integrated Security=SSPI
-- VersionMigration: migrating ===============================================
-- CreateTable VersionInfo
-- VersionMigration: migrated
-- CreateProductionDbCircaSep2010: migrating =================================
-- ExecuteSqlScript C:\My\Project\Path\FluentMigrator.Net\..\Resources\test.sql
-- CreateProductionDbCircaSep2010: migrated
Run Code Online (Sandbox Code Playgroud)
然而,数据库中没有表 - 甚至没有预期的VersionInfo表.
Rem*_*yth 19
经过一番调查和测试与版本0.8和1.0两种,看来这是关系到移民亚军的事务管理中FluentMigrator.Net错误 - 如果您运行具有特定版本号的迁移,事务提交不会被调用; 如果你没有指定版本号,那很好.
编辑:
我已经提交了一个被接受的项目补丁.这不再是一个问题.
我发现如果你的 dbconnection 字符串为空,也会发生同样的情况。错误的数据库连接字符串:崩溃,未找到迁移标签:崩溃..但是空数据库字符串..默默地除了查看并报告迁移有效之外什么也不做。被警告。
| 归档时间: |
|
| 查看次数: |
3547 次 |
| 最近记录: |