one many classmapping nhibernate hibernate hibernate-mapping

many - Asignar una propiedad a un campo desde otra tabla en NHibernate



nhibernate mapping collections (2)

considere la siguiente clase:

class Order { int OrderId {get; set;} int CustomerId {get; set;} string CustomerName {get; set;} //other fields go here }

que está mapeado en la tabla Pedidos. ¿Es posible asignar la propiedad CustomerName a la tabla Clientes a través de la relación de clave externa?


Le sugiero que no use <join/> para esto. Aunque lograría lo que solicitó, crea otros problemas.

En cambio, Order debería tener una relación con el Cliente. A continuación, puede proyectar el nombre si lo desea, aunque es más fácil simplemente usar order.Customer.Name .

Entonces, todo se reduce a esto:

1) Agregar propiedad del Customer a la Order

public virtual Customer Customer { get; set; }

2) Asigne la propiedad (en el ejemplo, CustomerId es el nombre de la columna FK)

<many-to-one name="Customer" column="CustomerId"/>

3) Si desea específicamente tener una propiedad CustomerName , proyectarla desde el Cliente:

public virtual string CustomerName { get { return Customer.Name; } }


Sí, puede usar el elemento de correlación de unión para esto. Otra opción es mapear una vista en lugar de una tabla. Pero si es posible, debe tomar el enfoque orientado a objetos y mapear la relación de muchos a muchos entre el pedido y el cliente.