Actualmente estoy tratando de implementar los repositorios para mis objetos de dominio con el RC de Entity Framework 4.1 y su primera aproximación de código. ahora tengo una entidad del dominio "Viaje", que tiene un identificador único encapsulado en el tipo "VoyageNumber"Primer código EF4.1 Primer tipo como clave principal
public class VoyageNumber
{
private readonly string number;
public VoyageNumber(string number)
{
Validate.NotNull(number, "VoyageNumber is required");
this.number = number;
}
public string Id
{
get { return number; }
}
ahora consigo una excepción cuando hago esto en la configuración de mi DbContext:
modelBuilder.Entity<Voyage>().HasKey<VoyageNumber>(k => k.VoyageNumber);
la propiedad 'VoyageNumber' no puede ser utilizado como una propiedad clave de la entidad 'Domain.Model.Voyages.Voyage' porque el tipo de propiedad no es una clave válida tipo. Solo los tipos escalares, cadena y byte [] son tipos de clave admitidos.
y también cuando intento esto:
modelBuilder.Entity<Voyage>().HasKey<string>(k => k.VoyageNumber.Id);
La expresión propiedades 'k => k.VoyageNumber.Id' no es válido. La expresión debe representar un propiedad: C#: 't => t.MyProperty'
¿Realmente tengo a la basura mi VoyageNumber y reemplazarlo con un tipo primitivo?
¿Cuál es el mensaje de excepción cuando se utiliza este: modelBuilder.Entity() .HasKey (k = > k.VoyageNumber); –
tpeczek
Actualizó la pregunta con los mensajes de excepción. – hoetz
sigue siendo el caso en EF 6.1.3 –