我已經繼承了一個數據庫,我試圖將它映射到流利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;
但我願意做的僅僅是設置在簽收步簽名屬性設置爲null,並有NHibernate的自動刪除的孩子。有沒有辦法設置我的映射來做到這一點?
編輯:設置級聯到「全刪除,孤兒」不可行:
添加上面的編輯。 Cascade all-delete-orphan對於引用關係是不可能的,我認爲這隻在HasMany上。 – 2012-04-10 04:15:25
upvotes努力。謝謝! – 2012-04-10 14:09:54