Asignación de una propiedad con un campo de otra tabla en NHibernate
-
21-09-2019 - |
Pregunta
considerar la siguiente clase:
class Order {
int OrderId {get; set;}
int CustomerId {get; set;}
string CustomerName {get; set;}
//other fields go here
}
que está asignada a tabla Pedidos. ¿Es posible trazar el CustomerName propiedad a la tabla de clientes a través de la relación de clave externa?
Solución
Sí, se puede utilizar el unirse a elemento de mapeo para esto. Otra opción es asignar una vista en lugar de una mesa. Pero si es posible, debería adoptar el enfoque orientado a objetos y el mapa de los muchos-a-muchos relación entre la Orden y de atención al cliente.
Otros consejos
le recomiendo encarecidamente que no se utiliza para este <join/>
. A pesar de que lograría lo que solicitó, crea otros problemas.
En lugar de ello, la Orden debe tener una relación con el cliente. A continuación, puede proyectar el nombre si lo desea, aunque es más fácil usar order.Customer.Name
.
Por lo tanto, se reduce a lo siguiente:
1) Añadir a la propiedad Customer
Order
public virtual Customer Customer { get; set; }
2) Mapa la propiedad (en el ejemplo, CustomerId es el nombre de la columna de FK)
<many-to-one name="Customer" column="CustomerId"/>
3) Si desea específicamente para tener una propiedad CustomerName
, proyecto que a partir de clientes:
public virtual string CustomerName { get { return Customer.Name; } }