首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >实体框架自定义注释

实体框架自定义注释
EN

Stack Overflow用户
提问于 2016-12-16 09:36:48
回答 1查看 1.4K关注 0票数 0

嗯,我试着为EF 6实现自定义注释,正如在Milinaudara教授的教程中解释的那样,这是我发现的第一次谷歌热。本教程非常容易理解。但是,在运行第一次迁移( 创建表 )之后,我似乎需要在一列中添加创建表注释,而[CaseSensitive]实际上将作为变更表操作在第二次迁移中执行。我说错了吗?因为这是我迄今所经历的..。

该注释可以在表创建时运行吗?我是否应该重写EF的Generate(CreateTableOperation createTableOperation)方法以确保实际应用[CaseSensitive]注释?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-12-19 01:02:12

Generate(AlterColumnOperation alterColumnOperation)只在模型更改时才被调用,并且从未在创建表或添加新列时被触发--也许这是相当明显的,但是本教程没有提到它。每种方法至少有一个背景故事会更好。最后,我重写了Generate(AddColumnOperation addColumnOperation)Generate(CreateTableOperation createTableOperation),因此看起来如下:

代码语言:javascript
复制
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可能是个坏主意。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41181232

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档