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.