好吧,我试图像a tutorial by Milinaudara中所解释的那样为EF 6实现自定义注释,因为它是我发现的第一个谷歌搜索。该教程非常容易理解。但是,在我运行第一次迁移后,我似乎需要在列上添加[CaseSensitive]
注释 - creating table - 并且[CaseSensitive]
将在第二次迁移时实际执行Generate(CreateTableOperation createTableOperation)
3}}操作。我错了吗?因为这是我迄今为止所经历的......
是否可以在创建表格时运行该注释?我应该覆盖EF的[CaseSensitive]
方法以确保实际应用view
注释吗?
答案 0 :(得分:0)
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));
}
}
虽然我知道我们永远不应该假设每个alter操作都是安全的..所以,在构造false
时传递AlterColumnOperation
可能是个坏主意。