2012-08-27 40 views
8

No puedo tener [.] (Puntos) en mis nombres de clave (Índices, claves principales y claves foráneas) cuando se generan mediante Add-Migration, así que traté de escribir un CSharpMigrationCodeGenerator, pero desafortunadamente esto no parece permitirle cambiar las claves foráneas o los nombres de índice. El nombre de la clave primaria se puede configurar como parte de anular la tabla crear:Entity Framework 5 Nombramiento clave con el código primero

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

Pero lo que realmente necesita es una manera de garantizar que sólo se ha quitado punto (lo que implica anulando el generador de nombres de encargo) - pero No puedo ver cómo hacer esto.

+4

¿Ha intentado utilizar el atributo de nombre de columna como se discute aquí: http://stackoverflow.com/questions/5082991/influencing-foreign-key-column-naming-in-ef-code-first-ctp5 –

+2

Si desea un control detallado de la base de datos. La base de datos primero podría ser una mejor solución luego codificar primero. –

Respuesta

0

¿No ha intentado generar el código de forma retrospectiva primero con el power tools?

No solo generará primeras clases de código para usted desde la base de datos, también puede personalizar las plantillas T4 que generan sus objetos para manejar escenarios únicos (por ejemplo, lógica de nombres personalizada para manejar caracteres reservados). Mi entity.tt tiene la siguiente encima de cada objeto generado: -

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

Esto significa que puedo tener todo mi validación de datos cultivada fuera en una clase separada que no está anulada tras la re-creación de mis objetos.

+0

Gracias: este problema ya no existe y era bastante específico en ese momento. Las cosas han cambiado con las herramientas en el último año y, por lo tanto, ya no son relevantes. –

0

este problema ya no existe y era bastante específico en ese momento. Las cosas han cambiado con las herramientas en el último año y, por lo tanto, ya no son relevantes porque no necesitarías resolver el problema de esta manera.

Muchas gracias por leer y comentar

Cuestiones relacionadas