c# - Entity Framework 5 代码优先的键命名

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

当我的键名(索引、主键和外键)由 Add-Migration 生成时,我不能在它们中包含 [.](句点),所以我尝试编写一个 CSharpMigrationCodeGenerator,但不幸的是,这并没有似乎允许您更改外键或索引名称。可以将主键名称设置为覆盖创建表的一部分:

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

但我真正需要的是一种方法来确保它刚刚删除了句号(这意味着覆盖自定义名称生成器)——但我不知道该怎么做。

最佳答案

您是否没有尝试过先使用 power tools 追溯生成代码? ?

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

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

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

关于c# - Entity Framework 5 代码优先的键命名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12150662/

相关文章:

c# - c#生成一系列加起来为N的随机数

c# - 检测字符串中的特定标记。 C#

java - Project Lombok 适合大型 java 项目吗?

scala - 在 Scala 中构建配置 DSL

c# - EF 选择小于等于 5 的最大值

.net - EF 4.3.1和EF 5.0 DbSet.Local比实际的数据库查询要慢

c# - 如何让内部控件不覆盖主控件的事件?

c# - ServiceStack.Text 和 ISODate ("")

c++ - 是否有 Perl 脚本来实现 C++ Class get/set 成员函数?

c# - 查询 SQL Server 的百分比