Cómo crear un índice para una propiedad de cadena en Entity Framework 7

entity-framework-core visual-studio-2015

Pregunta

Estoy tratando de crear un primer modelo de código para Entity Framework 7. Estoy usando Visual Studio 2015 Beta recientemente lanzado y las siguientes versiones de los paquetes EntityFramework (fragmento de mi archivo project.json):

"EntityFramework.SqlServer": "7.0.0-beta1",
"EntityFramework.Commands": "7.0.0-beta1",

Parece que actualmente no hay anotaciones de datos disponibles y estoy usando OnModelCreating override y migraciones recientemente implementadas (¿en parte?) Para crear mi modelo.

Por ahora, las claves primarias y las relaciones de una a una funcionan, así como la creación de índices para tipos enteros. Por ejemplo:

"EntityFramework.SqlServer": "7.0.0-beta1",
"EntityFramework.Commands": "7.0.0-beta1",

Este fragmento da como resultado el siguiente código de migración que se generará:

"EntityFramework.SqlServer": "7.0.0-beta1",
"EntityFramework.Commands": "7.0.0-beta1",

Pero cuando intento agregar un índice a la propiedad de cadena, se genera la migración, pero cuando se aplica es rechazado por SQL Server, aparentemente debido a que el tipo de columna es nvarchar (MAX). Parece que el .Required().MaxLength(100) no fuerza la generación del tipo de columna de cadena limitada. Y aunque hay un método para cambiar el tipo de columna, parece que no puedo encontrar la forma de llamarlo a través de ModelBuilder:

"EntityFramework.SqlServer": "7.0.0-beta1",
"EntityFramework.Commands": "7.0.0-beta1",

Migración resultante:

"EntityFramework.SqlServer": "7.0.0-beta1",
"EntityFramework.Commands": "7.0.0-beta1",

¿Hay una manera de crear un índice en la propiedad de cadena en la versión beta de EF7?

Respuesta aceptada

Lamentablemente, en este momento (7.0.0-beta1), no se respetan los metadatos de longitud máxima y tipo de columna al determinar qué tipo de columna usar. Por ahora, tendrá que desplegar DDL en bruto en la migración.

// Add before CreateIndex
migrationBuilder.Sql("ALTER TABLE [Keyword] ALTER COLUMN [Word] nvarchar(4000)");



Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué