嗯,我试着为EF 6实现自定义注释,正如在Milinaudara教授的教程中解释的那样,这是我发现的第一次谷歌热。本教程非常容易理解。但是,在运行第一次迁移( 创建表 )之后,我似乎需要在一列中添加创建表注释,而[CaseSensitive]实际上将作为变更表操作在第二次迁移中执行。我说错了吗?因为这是我迄今所经历的..。
该注释可以在表创建时运行吗?我是否应该重写EF的Generate(CreateTableOperation createTableOperation)方法以确保实际应用[CaseSensitive]注释?
发布于 2016-12-19 01:02:12
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可能是个坏主意。
https://stackoverflow.com/questions/41181232
复制相似问题