Mapa herencia de tablas como un uno-a-uno con NHibernate
-
22-09-2019 - |
Pregunta
Tengo una base de datos que tiene una relación de uno a uno modelada entre una persona y una dirección (que utiliza ID de la persona). Sin embargo, no puedo encontrar una manera de hacer el mapa utilizando NHibernate.
Mi estructura de la tabla es la siguiente:
PersonTable PersonId PersonName PersonAge AddressTable PersonId CountryName StreetName StateName
Y me gustaría tener algo como esto como la última clase:
PersonClass int Id string Name int Age Address HomeAddress AddressClass string Street string Country string State Person Owner
He intentado con relación hasOne pero yo no podía reutilización PERSONID como Dirección identificador.
Gracias!
Editar Me olvidé de mencionar que estoy usando FluentNHibernate por lo tanto el mapeo fluidez y XML va a estar bien
.Solución 2
Lo hice usando Id (). GeneratedBy.Foreign () en la clase de mapa Dirección referencia a la Person's Identificación y funcionó.
Gracias!
Otros consejos
El problema es que su esquema de base no representa una relación "tiene uno" entre la persona y dirección. Representa un "tiene muchos" relación; Usted puede limitar artificialmente a ser una dirección por persona, pero eso no cambia el hecho de que el modelo es varias direcciones por persona.
Para obtener una "cuenta con uno" relación, que pondría la AddressID en el la PersonTable.
Me asignarla como componente de la persona. En la persona ClassMap agregar lo siguiente:
Component(x => x.Address, m =>
{
m.Map(x => x.Street, "Street");
m.Map(x => x.State, "State");
// more here
});
Saludos