迁移器流程中如何为Migration表及列设置别名统一小写命名
如何为Migration表及列设置全小写别名以保持命名一致性
当然可以为Migration表及其列设置全小写别名,具体实现方式取决于你使用的迁移框架,结合你提供的代码,这里给出两种可行的实现思路:
通过迁移框架配置自定义表/列名
如果你的Migrator类支持配置扩展,可以在初始化时直接指定全小写的表名和列名映射:public void Migrations(IDbConnectionFactory dbFactory){ Logger.Info("---------------- Start Migrations Items ------------------"); // 假设Migrator支持通过配置项自定义命名 var migrator = new Migrator(dbFactory, typeof(Migration0000).Assembly) { TableName = "migration", ColumnMappings = new Dictionary<string, string> { {"Id", "id"}, {"MigrationName", "migration_name"}, {"AppliedOn", "applied_on"} // 根据实际列名补充全小写映射 } }; var result = migrator.Run(); Logger.Info($@"Succeeded: {result.Succeeded}"); Logger.Info($@"TasksRun: {result.TasksRun.ToList().Select(x => x.GetType()).ToList().Select(y => y.Name).ToJsv()}"); Logger.Info($@"TypesCompleted: {result.TypesCompleted.Select(x => x.Name).ToJsv()}"); Logger.Info("---------------- Finish Run Migrations -------------------"); }直接修改迁移文件中的命名
如果框架不支持动态配置,你可以直接在具体的迁移类(比如Migration0000)中,使用全小写的表名和列名来创建或修改表:public class Migration0000 : Migration { public override void Up() { Create.Table("migration") .WithColumn("id").AsInt32().PrimaryKey().Identity() .WithColumn("migration_name").AsString().NotNullable() .WithColumn("applied_on").AsDateTime().NotNullable(); } public override void Down() { Drop.Table("migration"); } }
如果你的Migrator是特定框架(比如ServiceStack Migrator)的实现,还可以通过框架提供的命名策略(如LowerCaseNamingStrategy)全局配置表和列的命名规则,一次性实现全小写的命名一致性。
内容的提问来源于stack exchange,提问作者Carlos Ramírez
相关产品推荐
相关产品推荐

