Я унаследовал базу данных, и я пытаюсь сопоставить ее с Fluent NHibernate. У меня есть следующая схема:HasOne или ссылки?
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....
)
И я пытаюсь отобразить его на следующих (Дополнительные свойства и отображений опущенных):
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);
}
}
}
Это прекрасно работает, за один раздражением, за исключением: удаление подписи. Я могу заставить его работать, если я вручную удалить подпись:
session.Delete(signoffStep.Signature);
signoffStep.Signature = null;
Но то, что я хотел бы сделать, это просто установить свойство подписи на этапе SIGNOFF к нулю, и есть NHibernate автоматически удалять ребенка. Есть ли способ настроить мое сопоставление для этого?
EDIT: Настройка каскада на "все-удалить-сирота" не выполнимо:
Добавлено править выше. Cascade all-delete-orphan невозможно с отношением References, я думаю, что это только на HasMany. –
Upvotes для усилий. Благодаря! –