Tengo que modelar esta relación en NHibernate (simplifiqué un poco el código para mantener el tema): un empleado puede ser un administrador de cuentas (por lo tanto, es opcional):Asignación de una relación uno a uno con un esquema de base de datos incorrecto (brownfield)
tabla de empleados (Id, número, nombre) mesa EmployeeIsAccountManager (Número, MaxAllowedDiscount)
en lugar de tener una clave externa Id en la tabla EmployeeIsAccountManager señalando Empleado mesa, que tiene una columna de Número en el Empleado tabla que apunta a la columna Número en la tabla EmployeeIsAccountManager.
¿Cómo puedo asignar esto en NHibernate? He intentado usar el generador foráneo en la asignación de clase EmployeeIsAccountManager, pero si uso Number como valor generado en el extranjero, se asigna a la identificación del empleado, que es Id en lugar de Number. Modelé mi clase de usar composición:
public class Employee
{
public virtual int Id { get; set; }
public virtual short Number {get; set; }
public virtual string Name {get; set; }
public virtual AccountManager AccountManager { get; set; }
}
public class AccountManager
{
public virtual short Number { get; set; } /*needed because of ID only?*/
public virtual decimal MaxAllowedDiscount { get; set }
}
He intentado un montón (uno-a-uno, muchos-a-uno, generador de divisas), pero no puedo averiguar si esto se puede hacer con NHibernate. BTW: Puedo cambiar las clases, mapeos, etc. pero NO PUEDO cambiar la estructura de la tabla debido a su estado de brownfield (aplicación antigua con más de 2 millones de líneas de código, casi 1000 formas).
¡Se agradece cualquier ayuda, gracias! Ted
Busque el atributo de asignación de propiedad de ref ... – JulianM