many - ¿Cómo mapeo una propiedad de char utilizando la API de "solo código" de Entity Framework 4.1?
fluent api entity framework foreign key (2)
En Fluent API puede especificar el tipo de datos de la columna de la base de datos utilizando el método HasColumnType de esta manera:
modelBuilder.Entity<Product>()
.Property(p => p.Code)
.HasColumnType("char");
Según la respuesta de Andre Artus here , HasColumnType está disponible en EF4.1.
Para aquellos que usan anotaciones de datos, ColumnAttribute puede lograr lo mismo.
[Column(TypeName="char")]
public string Code { get; set; }
Tengo un objeto que tiene una propiedad de char:
public class Product
{
public char Code
{
get;
set;
}
}
Entity Framework no parece poder asignar caracteres (este campo falta en la base de datos cuando creo el esquema de la base de datos a partir de mis objetos modelo). ¿Hay alguna forma en que pueda mapear el carácter (por ejemplo, una cadena) usando la API fluida? No deseo cambiar los objetos modelo ya que son parte de una biblioteca compartida heredada.
Char
no es un tipo primitivo válido para el marco de la entidad = el marco de la entidad no lo mapea. Si revisa la referencia CSDL verá una lista de tipos válidos ( char
no se encuentra entre ellos).
La base de datos char(1)
se traduce como string
( traducción de SQL a CSDL ). Char
se describe como una cadena no unicode con longitud fija 1 .
La única opción fea es la segunda propiedad mapeada usando una cadena y su propiedad char
no mapeada solo usará la string[0]
de esa propiedad. Ese es solo otro ejemplo de cómo algunos de los tipos simples de mapeo o convertidores faltan en EF.