我仍然是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的东西。
提前感谢任何提示/建议!
答案 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;
}