Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

164
Views
Cambiar la convención de nomenclatura de restricción de clave externa

Tenemos nuestra propia convención externa de nomenclatura de objetos y necesito cambiar la convención de nomenclatura para las restricciones de clave externa generadas automáticamente. Ahora parece: FK_dbo.City_dbo.CityType_City_CityTypeId pero me gustaría que se llamara City_FKC_CityType .

Encontré una pregunta similar que dice que puede cambiar el nombre de las restricciones manualmente. Sin embargo, esto no me conviene, ya que tengo muchas tablas y restricciones de clave externa.

Encontré información sobre "Primeras convenciones de código personalizado" y me pregunto si puedo cambiar el nombre de la restricción usando esto o si hay algún método para implementarlo.

Otra variante es descargar el código fuente de EF, hacer cambios y usarlo pero eso es en caso de emergencia.

Como nota al margen, también me gustaría cambiar la convención de nomenclatura de la clave principal.

over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

Puede implementar una clase generadora de sql personalizada derivada de SqlServerMigrationSqlGenerator del espacio de nombres System.Data.Entity.SqlServer :

 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 } }

Luego, debe registrar su generador en DbContext usando DbConfiguration :

 public class CustomDbConfiguration : DbConfiguration { public CustomDbConfiguration() { SetMigrationSqlGenerator(SqlProviderServices.ProviderInvariantName, () => new CustomSqlGenerator()); } }

Y DbConfigurationTypeAttribute :

 [DbConfigurationType(typeof(CustomDbConfiguration))] public class YourEntities : DbContext

ACTUALIZACIÓN: si desea cambiar el nombre de una clave principal, debe anular los siguientes métodos de Generate :

 protected override void Generate(CreateTableOperation createTableOperation) { createTableOperation.PrimaryKey.Name = getPkName(createTableOperation.Name); base.Generate(createTableOperation); } protected override void Generate(AddPrimaryKeyOperation addPrimaryKeyOperation) { addPrimaryKeyOperation.Name = getPkName(addPrimaryKeyOperation.Table); base.Generate(addPrimaryKeyOperation); } protected override void Generate(DropPrimaryKeyOperation dropPrimaryKeyOperation) { dropPrimaryKeyOperation.Name = getPkName(dropPrimaryKeyOperation.Table); base.Generate(dropPrimaryKeyOperation); }
over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!