实体框架5首先使用代码进行密钥命名

时间:2012-08-27 22:50:30

标签: c# code-generation entity-framework-5

当我的密钥名称(索引,主键和外键)由Add-Migration生成时,我不能有[。](句点),所以我试着写一个CSharpMigrationCodeGenerator,但遗憾的是这不是似乎允许您更改外键或索引名称。主键名称可以设置为覆盖create table的一部分:

protected override void Generate(
    CreateTableOperation createTableOperation, IndentedTextWriter writer)
    {
        createTableOperation.PrimaryKey.Name = "USE THIS NAME";
        base.Generate(createTableOperation, writer);
    }

但我真正需要的是确保它刚刚删除完全停止(这意味着覆盖自定义名称生成器)的方法 - 但我看不到如何执行此操作。

3 个答案:

答案 0 :(得分:0)

您是否曾尝试使用power tools回溯生成代码?

它不仅可以从数据库为您生成代码优先类,还可以自定义生成对象的T4模板,以便处理独特的场景(例如自定义命名逻辑来处理保留字符)。我的entity.tt在每个生成的对象上面都有以下内容: -

[MetadataType(typeof(<#= efHost.EntityType.Name #>_Validation))]

这意味着我可以将我的所有数据验证都放到一个单独的类中,该类在重新创建对象时不会被覆盖。

答案 1 :(得分:0)

这个问题不再存在,当时非常具体。在过去的一年中,工具已经继续使用工具,因此不再具有真正的相关性,因为您不需要以这种方式解决问题。

非常感谢阅读和评论

答案 2 :(得分:0)

通过实体框架代码首先迁移你可以更改外键或索引名称,你可以在这里的例子中看到: http://msdn.microsoft.com/en-us/data/jj591621.aspx http://www.dotnetcurry.com/showarticle.aspx?ID=889