gpt4 book ai didi

c# - FluentMigrator 版本控制刷新 View

转载 作者:太空宇宙 更新时间:2023-11-03 15:49:49 25 4
gpt4 key购买 nike

我正在使用 Fluent Migrator 来保持数据库更新。向上和向下功能完美运行。下一步是我要创建 View 。这些我想从我拥有的 .SQL 文件运行。我希望每次都在运行所有迁移后运行它。

我目前拥有的是:

var blah = new MigrationConventions();
var maintenanceLoader = new MaintenanceLoader(_migrate, blah);
maintenanceLoader.ApplyMaintenance(MigrationStage.AfterAll);

和一个类

[Maintenance(MigrationStage.AfterAll)]
public class ViewMaintenance
{
public ViewMaintenance() {
var blah = 123;
}
}

这没有被触发,因为在 maintenanceLoader 中它可以找到 0 个元素。我正在插入 _migrate,它的定义如下:

var runnerContext = new RunnerContext(new TextWriterAnnouncer(UpdateText));
_migrate = new MigrationRunner(
Assembly.GetExecutingAssembly(),
runnerContext,
new SqlServerProcessor(
new SqlConnection(connectionString),
new SqlServer2012Generator(),
new TextWriterAnnouncer(UpdateText),
new ProcessorOptions(),
new SqlServerDbFactory()));

为什么扫描不到Assembly.GetExecutingAssembly(),却找不到[Maintenance(MigrationStage.AfterAll)]

我还希望 ViewMaintenance 类能够运行 Migration 类具有的 Execute.Sql(

最佳答案

我下载了源代码并弄明白了。

在我希望运行维护的类中,我需要从 : Migration 类继承,就像迁移一样(duh..)。然后它将可以访问它在迁移中可以访问的所有内容,包括 Execute.Sql(

当它被继承时,Fluent Migrator 中的 Reflection 将搜索它,找到它,并使用设置的属性在所有迁移运行后运行它。

这部分不需要:

var blah = new MigrationConventions();
var maintenanceLoader = new MaintenanceLoader(_migrate, blah);
maintenanceLoader.ApplyMaintenance(MigrationStage.AfterAll);

整洁 :)

关于c# - FluentMigrator 版本控制刷新 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26356097/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com