【问题标题】:Entity Framework 5 Key naming with code firstEntity Framework 5 Key 命名,代码优先
【发布时间】:2012-08-22 10:53:04
【问题描述】:

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

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

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

【问题讨论】:

  • 您是否尝试过使用此处讨论的列名属性:stackoverflow.com/questions/5082991/…
  • 如果你想详细控制数据库。首先数据库可能是一个更好的解决方案,然后是代码。

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


【解决方案1】:

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

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

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

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

【讨论】:

  • 谢谢 - 这个问题不再存在并且当时非常具体。在过去的一年里,随着工具的发展,事情已经发生了变化,因此不再真正相关。
【解决方案2】:

这个问题已经不存在了,而且在当时是相当具体的。在过去的一年里,随着工具的发展,事情已经发生了变化,因此不再真正相关,因为您不需要以这种方式解决问题。

非常感谢您的阅读和评论

【讨论】:

    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-09-23
      • 2013-07-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-04
      • 2020-04-29
      相关资源
      最近更新 更多