Generate(AlterColumnOperation alterColumnOperation)
只有在模型發生變化時才被調用,並且永遠不會在表格創建或添加新列時被觸發 - 也許這很明顯,但教程沒有提及它..每個方法的背景故事至少會更好..我最終覆蓋Generate(AddColumnOperation addColumnOperation)
和Generate(CreateTableOperation createTableOperation)
所以它看起來像:
protected override void Generate(AddColumnOperation addColumnOperation)
{
//add the column
base.Generate(addColumnOperation);
//alter the column
this.Generate(new AlterColumnOperation(addColumnOperation.Table, addColumnOperation.Column, false));
}
protected override void Generate(CreateTableOperation createTableOperation)
{
//add the column
base.Generate(createTableOperation);
//alter the column
foreach(ColumnModel column in createTableOperation.Columns)
{
this.Generate(new AlterColumnOperation(createTableOperation.Name, column, false));
}
}
雖然我知道不應該承擔所有的改變操作是安全的..所以,路過false
當構建AlterColumnOperation
可能是一個壞主意。