我正在寻找一种方法来在创建表之前为流畅的迁移器检查编写扩展方法,类似这样
Schema.TableIfNotExist("table").InSchema("dbo").WithColumn("Id").AsInt32().NotNullable()
是否可以编写扩展方法?
答案 0 :(得分:5)
是的,你可以
public static class Ex
{
public static IFluentSyntax CreateTableIfNotExists(this MigrationBase self, string tableName, Func<ICreateTableWithColumnOrSchemaOrDescriptionSyntax, IFluentSyntax> constructTableFunction, string schemaName = "dbo")
{
if (!self.Schema.Schema(schemaName).Table(tableName).Exists())
{
return constructTableFunction(self.Create.Table(tableName));
}
else
return null;
}
}
你将有两个警告(我知道):
要使用上面的扩展和你的例子,你会做
public override void Up()
{
this.CreateTableIfNotExists("table", table => table.WithColumn("Id").AsInt32().NotNullable());
}