私はデータベースを継承しており、それを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);
}
}
}
これは、1人の迷惑を除いて、素晴らしい作品:署名を削除します。
session.Delete(signoffStep.Signature);
signoffStep.Signature = null;
をしかし、私はちょうどnullにサインオフステップに署名プロパティを設定してやりたい、とNHibernateは、自動的に子を削除する必要があるだろう:私は手動で署名を削除する場合はそれを動作させることができます。これを行うために私のマッピングをセットアップする方法はありますか?
EDIT:なんとかない「全削除 - 孤児」にカスケードの設定:
上記の編集を追加しました。 Cascade all-delete-orphanはReferencesの関係では使用できません。HasManyにしかないと思います。 –
努力のためのUpvotes。ありがとう! –