Ich habe eine Datenbank geerbt und versuche Fluent NHibernate zuzuordnen. Ich habe folgendes Schema:HasOne Oder Referenzen?
CREATE TABLE [Signatures](
[Id] [int] IDENTITY(1,1) PRIMARY KEY CLUSTERED NOT NULL,
-- Other Fields....
)
CREATE TABLE [SignoffSteps](
[Id] [int] IDENTITY(1,1) PRIMARY KEY CLUSTERED NOT NULL,
[SignatureId] [int] NULL REFERENCES [Signatures]([Id]),
-- Other Fields....
)
Und ich bin versucht, es zu folgenden (Zusätzlichen Eigenschaften und Zuordnungen weggelassen) zur Karte:
public class SignoffStep
{
public virtual int Id { get; set; }
public virtual Signature Signature { get; set;}
public class Map : ClassMap<SignoffStep>
{
public Map()
{
Table("SignoffSteps");
Id(x => x.Id);
References(x => x.Signature, "SignatureId")
.Nullable()
.ForeignKey("FK_SingoffSteps_Signatures")
.Cascade.All()
.Not.LazyLoad();
}
}
}
public class Signature
{
public virtual int Id { get; set; }
public class Map : ClassMap<Signature>
{
public Map()
{
Table("Signatures");
Id(x => x.Id);
}
}
}
Dies funktioniert gut, mit Ausnahme eines Ärger: Signaturen löschen Ich kann es funktioniert, wenn ich manuell die Unterschrift:
session.Delete(signoffStep.Signature);
signoffStep.Signature = null;
Aber was ich möchte ist zu tun, setzen Sie einfach die Signature-Eigenschaft auf dem signoff Schritt auf null, und haben NHibernate automatisch das Kind löschen. Gibt es eine Möglichkeit, mein Mapping dafür einzurichten?
EDIT: Einstellung Cascade "All-löschen-Waise" nicht machbar:
Bearbeitung oben hinzugefügt. Cascade all-delete-orphan ist nicht möglich mit einer References-Beziehung, ich denke, das ist nur auf HasMany. –
Upvotes für Aufwand. Vielen Dank! –