当我的键名(索引、主键和外键)由 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/