2011-07-26 12 views
5

Estoy tratando de usar join para obtener una sola propiedad de otra tabla, que no tiene una asignación. Mi problema es que cuando creo una nueva instancia de la entidad mapeada y la guardo, aparece un error al intentar insertar en mi tabla no asignada (está intentando insertar nulo en una columna que no sea nula). Pensé que el uso de .ReadOnly() evitaría que nhibernate intente insertar en mi tabla no asignada pero eso no parece funcionar.Fluent nHibernate Join está haciendo inserción en la tabla unida

Mi mapeo se ve así:

 // Join _UnMapped table with Mapped table to get the property 
     Join("_UnMapped", x => 
      { 
       x.Fetch.Join(); 
       x.KeyColumn("UnMappedFK"); 
       x.Map(y => y.Property, "Property") 
        .Not.Nullable() 
        .ReadOnly(); 
      }); 

he pensado en crear una visión y mapeo a que para obtener esta propiedad, pero si puedo prefiero hacerlo a través de un mapeo. Cualquier ayuda (o una explicación sobre cómo se supone que debe funcionar) sería muy apreciada.

Respuesta

8

Use x.Inverse();.

Here es un poco de documentación sobre join.

+0

Como resultado, la configuración inversa funcionó después de resolver algunos otros problemas que tenía. Aunque no entiendo por qué. Pensé que era solo una bandera para decirle a nhibernate qué entidad en la relación posee el FK. en este caso, mi tabla mapeada es la que tiene el FK (es decir, inverso = falso ¿no?). Su enlace no funciona para mí, así que lamentablemente eso no me ayuda. –

+0

@Ben No sé por qué el enlace no funciona para usted, funciona bien para mí. Pero "inverso" es solo un mal nombre aquí. De la documentación: Inverso (opcional - por defecto es falso): si está habilitado, Hibernate no intentará insertar o actualizar las propiedades definidas por esta unión. – cremor

Cuestiones relacionadas