【问题标题】:Best practice for adding code and status values with FluentMigrator?使用 FluentMigrator 添加代码和状态值的最佳实践?
【发布时间】:2012-03-20 03:30:45
【问题描述】:

我们正在开发一个使用 Entity Framework 4(代码优先)和 Fluent Migrator 的项目。

在整个项目过程中,我们为所有架构更改创建了迁移,并为我们希望在各种环境中填充的测试数据创建了配置文件

但是,插入我们希望在所有环境中填充的“代码”和/或“状态”的最佳做法是什么?我们应该在创建表时指定它们还是应该为它们创建一个特定的配置文件?

更具体地说,我们有一个为我们的数据库定义的地址类型的“代码”表,如下所示:

[Migration(22)]
public class M0022_CreateAddressTypesTable : Migration
{
    public override void Up()
    {
        Create.Table("AddressTypes")
            .WithColumn("Id").AsInt32().NotNullable().PrimaryKey()
            .WithColumn("Name").AsString(50).NotNullable().WithDefaultValue(string.Empty)
            .WithColumn("Description").AsString(100).NotNullable().WithDefaultValue(string.Empty);
    }

    public override void Down()
    {
        Delete.FromTable("AddressTypes");
        Delete.Table("AddressTypes");
    }
}

那么,我们是否应该利用这个机会也用我们的数据填充 AddressTypes 表?还是我们应该将其抽象为某种形式的配置文件?

我看到两者的优点和缺点,所以我很想听听其他团队是如何处理这种情况的。

【问题讨论】:

  • 你最后做了什么?我们有同样的问题...

标签: c# fluent-migrator schema-migration


【解决方案1】:

如果您确定所有环境都需要它们,我会亲自将“参考数据”放在迁移类中,而不是配置文件中。

使用简单的规则,维护和代码理解总是更容易,例如:

个人资料 => 特定(测试、其他)数据

迁移 => 通用数据

特定的个人资料只会增加无用的复杂性(我的拙见)。

【讨论】:

  • 我还是来来回回。例如,要查看添加代码和/或状态值的位置,您必须扫描几乎所有的迁移文件。如果它们在一个文件中,它们将位于一个位置并且更易于管理。我认为这实际上提高了维护和代码理解能力。
  • 好吧,那你为什么不创建一个带有“插入方法”的静态类,你可以从不同的迁移类中调用它。您无法为不存在的表添加数据,因此您在一个地方有“具体插入”,并在需要它们的地方调用这些插入
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-20
  • 2010-09-06
  • 1970-01-01
  • 1970-01-01
  • 2012-01-13
相关资源
最近更新 更多