2009-10-01 16 views
13

Tengo una entidad 'Usuario' que contiene un Objeto de valor 'Dirección'. Tengo este mapeo bien usando el concepto de Componente de FNH. Sin embargo, la dirección VO también contiene un país que es otro objeto de valor. Supuse que esto debería anidarse como otro componente, pero parece que no funciona. ¿Alguien puede decirme cómo debo resolver esto?Asignación de componentes anidados en Fluidez NHibernate

El código de mapeo está debajo ...

¡Gracias!

public UserMapping() 
     { 
      Table("Users"); 
      Id(c => c.Id).GeneratedBy.HiLo("100"); 
      Map(c => c.UserName).Not.Nullable().Length(64); 
      Map(c => c.Email).Not.Nullable().Length(128); 
      Map(c => c.Password).Not.Nullable().Length(256); 
      Map(c => c.Roles).Length(64); 
      Map(c => c.FirstName).Not.Nullable().Length(64); 
      Map(c => c.LastName).Not.Nullable().Length(64); 
      Map(c => c.BirthDate).Not.Nullable(); 
      //Address 
      Component(x => x.Address, m => 
      { 
       m.Map(x => x.AddressLine1).Not.Nullable(); 
       m.Map(x => x.AddressLine2); 
       m.Map(x => x.City).Not.Nullable(); 
       m.Map(x => x.Region); 
       m.Map(x => x.PostalCode).Not.Nullable(); 
       //*****Country Here******** 
       // country has Name and Code 

      }); 
     } 

Respuesta

13

Ah, Jimmy Bogard de la lista de correo FNH me mostró - es bastante sencillo. ¡No sé lo que estaba haciendo antes! De todos modos, para cualquier otra persona que esté interesada:

Component(c => c.Address, m => 
{ 
    m.Component(cp => cp.Country, m2 => 
    { 
     m2.Map(x => x.Name); //etc 
    } 
+1

Increíble. No me di cuenta de que podías anidarlos así. He estado trabajando en hacer esto por una semana. –

+0

¿Qué sucede si tengo IdCountry en la dirección del país en lugar del nombre y el código (siempre que IdCountry sea la clave principal del país)? – Apocatastasis

0

me gustaría crear un mapa para Country y utilizar m.References(x => x.Country).

+3

¿Pero entonces no sería eso tratar a país como una entidad más que como un objeto de valor? Sin embargo, tal vez no haya inconveniente en hacer eso. – UpTheCreek

+2

Hay un inconveniente. Las entidades tienen su propia "vida" (lo que afecta a todas las consultas de selección y actualización) y no queremos aquí tener una "Dirección" que viva por sí misma. – NOtherDev

Cuestiones relacionadas