我们有自己的命名对象的外部约定,我需要更改自动生成的外键约束的命名约定。现在看起来像:FK_dbo.City_dbo.CityType_City_CityTypeId
但我希望它被称为City_FKC_CityType
。更改外键约束命名约定
我发现一个similar question其中说,你可以手动更改约束的名称。但是,这不适合我,因为我有很多表和外键约束。
我发现了一些关于“Custom Code First Conventions”的信息,我想知道是否可以使用它更改约束的名称,或者是否有任何方法来实现它?
另一个变种是下载EF的源代码,进行更改和使用,但在紧急情况下。
作为一个方面说明,我还想更改主键的命名约定。
public class CustomSqlGenerator : SqlServerMigrationSqlGenerator
{
protected override void Generate(AddForeignKeyOperation addForeignKeyOperation)
{
addForeignKeyOperation.Name = getFkName(addForeignKeyOperation.PrincipalTable,
addForeignKeyOperation.DependentTable, addForeignKeyOperation.DependentColumns.ToArray());
base.Generate(addForeignKeyOperation);
}
protected override void Generate(DropForeignKeyOperation dropForeignKeyOperation)
{
dropForeignKeyOperation.Name = getFkName(dropForeignKeyOperation.PrincipalTable,
dropForeignKeyOperation.DependentTable, dropForeignKeyOperation.DependentColumns.ToArray());
base.Generate(dropForeignKeyOperation);
}
private static string getFkName(string primaryKeyTable, string foreignKeyTable, params string[] foreignTableFields)
{
// Return any format you need
}
}
然后,你需要在DbContext
注册您的发电机使用DbConfiguration
:
你丰富的使用粗体和斜体让我的眼睛受伤了!另外,该答案中的解决方案不适合哪种方式?这很简单。 – DavidG
好吧,我改变了它:)。我有太多的表,每个表都有一些限制。更改每个外键的名称需要很长时间 – Marusyk