如何使用Fluent Migrator更改表定义

3

我正在尝试自学Fluent Migrator,但是我卡在一个问题上。我需要改变由Fluent Migrator创建的表的结构,也就是说,我使用以下代码创建了一个名为"用户"的表。

 [Migration(201306041130)]
    public class BussinessMigrator : Migration
    {
        public override void Up()
        {
            Create.Table("user")
                .WithColumn("id").AsInt32().PrimaryKey().NotNullable().Identity()
                .WithColumn("name").AsString().NotNullable()
                .WithColumn("email_id").AsString().NotNullable()
                .WithColumn("phone").AsInt32().NotNullable()
                .WithColumn("address").AsString().NotNullable()
                .WithColumn("company_id").AsInt32().NotNullable();
        }

    }

现在我需要在列名后添加3个名为avatar_name、avatar_type和avatar_data的列,我该怎么做?请给出一个示例作答。
提前感谢。
1个回答

6

有两种方法可以做到这一点。一种是使用Alter.Table表达式,另一种是使用Create.Column表达式。

以下是来自wiki的Alter.Table示例:

Alter.Table("Bar")
    .AddColumn("SomeDate")
    .AsDateTime()
    .Nullable();

这里是Create.Column的示例:

Create.Column("avatar_name")
    .OnTable("user")
    .AsString()
    .Nullable();

通常使用 FluentMigrator 时,您可以依靠智能感知来帮助您。例如,如果您从键入“Create”和点号开始,然后智能感知应该会显示 Column、ForeignKey、Index、PrimaryKey、Schema、Sequence、Table 和 UniqueConstraint。大多数情况下,这个过程应该非常易于发现和明显。

有七个根可以开始:Create、Alter、Delete、Execute、Rename、Insert 和 Update。


我该如何编写上述迁移的down()实现,也就是删除列? - d.Siva
1
@d.Siva 使用 Delete root。例如:Delete.Column("avatar_name").Column("avatar_type").FromTable("user"); - Daniel Lee
1
在Create.Column(c).OnTable(t)和Alter.Table(t).AddColumn(c)之间有任何区别吗?我的意思是,它们返回不同的类型(ICreateColumnAsTypeOrInSchemaSyntax vs. IAlterTableColumnAsTypeSyntax)。 - Trinition

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接