Básicamente tengo una tabla con códigos postales. El campo de código postal se define como 'char (5)'. Estoy utilizando el código en primer lugar, por lo que he puesto estos atributos en mi propiedad Código postal:¿Por qué el código first/EF usa 'nvarchar (4000)' para cadenas en el comando SQL sin formato?
[Key, Column(Order = 0, TypeName = "nchar"), StringLength(5)]
public string ZipCode { get; set; }
Ahora bien, si me pregunta contra esto en EF:
var zc = db.ZipCodes.FirstOrDefault(zip => zip.ZipCode == "12345");
El SQL generado utiliza nvarchar (4000) para inyectar los parámetros. ¿Huh? ¿Es porque "12345" es técnicamente una cadena de longitud desconocida? ¿No debería EF ser lo suficientemente inteligente como para usar el "nchar (5)" apropiado al consultar esa tabla?
Lo pido porque la consulta nvarchar (4000) lleva medio segundo, mientras que la consulta del alcance correcto es mucho más rápida (y menos lecturas).
Cualquier asistencia/consejo sería apreciado.
cayo y volver a crear la base de datos después de agregar los atributos de sus entidades? – BrokenGlass
Esto va en contra de una base de datos existente y no permitiré que Code First la vuelva a generar. La base de datos existente definitivamente es char (5). –