2010-01-15 25 views
25

Por un tiempo (muy) largo he estado buscando un ejemplo sobre cómo implementar correctamente un mapeo uno a uno con Fluidez NHibernate.Fluido NHibernate y uno a uno

La mayoría de los recursos que encuentro dicen:

Creo que significa una relación muchos-a-uno

Sin embargo en realidad nadie da un ejemplo sobre cómo aplicar correctamente el uno a relación.

Entonces, ¿podría dar un ejemplo de mapeo de uno a uno con Fluent NHibernate?

Nota: No me interesa que la gente diga "¿cuál es su modelo, en realidad podría necesitar HasMany". No, gracias, solo necesito un de uno a uno ejemplo.

Para ser más precisos, Sé la sintaxis. Eso es lo único que pude encontrar buscando por mi cuenta. Lo que estoy buscando es un ejemplo más completo, que incluye una configuración de base de datos (muy simple) y toda la asignación de todas las entidades que participan en la relación, que creo que tendría un tamaño razonable para Stack Overflow.

Respuesta

19

He resuelto mi problema.

También he escrito un artículo un tanto detallada sobre este problema, que se puede encontrar en: http://brunoreis.com/tech/fluent-nhibernate-hasone-how-implement-one-to-one-relationship/index.html

Va a encontrar un escenario en el que queremos una relación uno-a-uno, el esquema de base de datos a medida que le gustaría, el código del modelo, ya que debe cumplir con los requisitos de NHibernate, y el Fluent mapeo que corresponde a la situación.

+0

enlace arroja acceso denegado error como @ 2015/01/19 –

+0

Solucionado. Accidentalmente rompí el enlace hace 2 días cuando cambié algunas configuraciones. ¡Gracias por informar! –

+4

Por favor, publique el contenido relevante en la respuesta. Se desaconsejan las respuestas de solo enlace. – BartoszKP

0

HasOne(x => x.Prop)

+0

Esto no es un ejemplo, esta es solo la sintaxis. Estoy buscando un ejemplo más contextual, explicando también la configuración de la base de datos. –

+0

Dijiste que no querías un HasMany, lo que implicaba que en realidad sabes lo que es uno para uno para poder elegir sobre otra cosa. –

+0

sí, sé lo que es uno a uno, pero siempre encuentro problemas con el mapeo de los ID, los ID autogenerados. –

2

This is the best example que he visto. Espero que satisfaga sus necesidades.

+0

Por favor, ponga la información más importante en la publicación. Se desaconsejan las respuestas de solo enlace. – BartoszKP

3
these are the two classes. 

public class A 
{ 
    public virtual int Id {get;set;} 
    public virtual string P1 {get;set;} 
    public virtual string P2 {get;set;} 
    public virtual string P3 {get;set;} 
    public virtual B child { get; set; } 
} 

public class B 
{ 
    public virtual int Id {get;set;} 
    public virtual string P4 {get;set;} 
    public virtual string P5 {get;set;} 
    public virtual string P6 {get;set;} 
    public virtual A parent; 
}  

esto se debe agregar en la configuración fluida.

public AMap() 
    { 
     /* mapping for id and properties here */ 
     HasOne(x => x.child) 
      .Cascade.All(); 
    } 

    public BMap() 
    { 
     /* mapping for id and properties here */ 
     References(x => x.parent) 
      .Unique(); 
    } 
Cuestiones relacionadas