OrchardCMS - 使用Migrations.cs向表中添加列

时间:2014-05-15 03:50:45

标签: database migration orchardcms

我仍然是OrchardCMS开发的新手,我能够使用Migrations.cs文件创建一个表和一些列。创建新表和列后不久,我突然意识到我实际上需要在同一个表中添加几列。

对于我最初的Migrations.cs,我有类似于下面的内容(为简洁起见,代码的不相关部分):

// some code above
SchemaBuilder.CreateTable("ProductPartRecord", table => table
    .ContentPartRecord()
    .Column<decimal>("UnitPrice")
    .Column<string>("Sku", column => column.WithLength(50))
    );
return 1;
// some code below

要添加其他列,我需要根据我的有限知识创建一个类:

public int UpdateFrom1()
{
    SchemaBuilder.AlterTable("ProductPartRecord", table => table
        .AddColumn<string>("UnitColor", c => c.Nullable())
    );
    return 2;
}

但是,问题出现了:为什么我不能通过插入类似CreateTable的内容而不是创建.Column<string>("UnitColor")类来修改初始UpdateFrom1()方法?

此外,让我们说软件需求稍后更改,现在我需要在同一个表中添加另一列。我会创建另一个类吗? (例如,UpdateFrom2()等......)似乎很奇怪,我想认为这是一个更好/更聪明的方式,但也许它只是一个Orchard的东西。

提前感谢任何提示/建议!

2 个答案:

答案 0 :(得分:2)

是的,据我所知,这就是Orchard的工作方式,迁移存储为版本,因此您需要为下次迁移添加UpdateFrom2()..等等。

问候。

答案 1 :(得分:1)

  

您应该向UpdateFrom添加一个单位,然后为每个单位返回一个单位   更改。

 //Migrations.cs              

public int UpdateFrom2()
{
    SchemaBuilder.AlterTable("ProductPartRecord", table => table
        .AddColumn<string>("UnitColor", c => c.Nullable())
    );
    return 3;
}