Ah, a alegria de fazer o relacionamento 1:1 funcionar no NHibernate! Faz anos que tento!
A solução descrita aqui é para FluentNHibernate e usando IAutoMappingOverride.
No map da classe que corresponde a entidade que tem o ID apontando para a outra, não precisa fazer nada. Já no outro map, é necessário colocar este código:
-
mapping.HasOne(m => m.[outra classe]).PropertyRef(b => b.[classe dona do map]);
-
-
Como a gente entende mais vendo código que falando, aqui vai o exemplo:
-
SQL
create table Mother
(
ID int
)
-
create table Daughter
(
ID int,
Mother_ID int
)
-
-
Entidades
class Mother
{
int ID { get; set; }
Daughter Daughter { get; set; }
}
-
class Daughter
{
int ID { get; set; }
Mother Mother { get; set; }
}
-
-
Mappings
public class MotherMap : IAutoMappingOverride<Mother>
{
public void Override(AutoMapping<Mother> mapping)
{
mapping.HasOne(m => m.Daughter).PropertyRef(b => b.Mother);
}
}
-
public class DaughterMap : IAutoMappingOverride<Daughter>
{
public void Override(AutoMapping<Daughter> mapping)
{
}
}
-
Nenhum comentário:
Postar um comentário