Ich bin eine Person und eine Todesbescheinigung modellieren, wo eine Person keine oder eine Todesbescheinigung haben kann. Wenn ich habe:nHibernate Null oder eins zu eins mit Mapping von Code
public class Person
{
public string PersonId { get; set; }
public virtual DeathCertificate { get; set; }
}
und:
public class DeathCertificate
{
public string DeathCertificateId { get; set; }
public string PersonId { get; set; }
public virtual Person { get; set; }
}
Wo DeathCertificateId den Primärschlüssel DeathCertificate in der Datenbank ist.
Mit dem folgenden in der Abbildung für die Person:
this.OneToOne(
entity => entity.DeathCertificate,
mapper =>
{
mapper.Access(Accessor.Property);
mapper.Cascade(Cascade.Detach | Cascade.Persist);
mapper.PropertyReference(p => p.Person);
mapper.Constrained(false);
});
Und dies für die Sterbeurkunde:
this.ManyToOne(
entity => entity.Person,
mapper =>
{
mapper.Column("PERSON_ID");
mapper.Cascade(Cascade.None);
mapper.Unique(true);
});
Leider erzeugt diese SQL ähnlich der folgenden, wenn ich Person abfragen, ob ich Join es in oder nicht:
select ...
from person p
left outer join deathcertificate dc
on dc.person_id = p.person_id
where p.person_id = 'ABC123'
So funktioniert alles, aber ich will nur ein Sterbeurkunde, wenn ich explizit beitreten.
Ich denke, ich habe etwas falsch in meinen Mappings. Kann jemand helfen?