Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

165
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda