我有兩個對象。其中一位父母引用了Locale。此語言環境來自語言環境列表。當該語言環境被刪除時,我希望它從所有引用類型中清除對自身的任何引用(將相關值設置爲空)。C#NHibernate - 刪除所有對刪除對象的引用
現在,我有一個系統遍歷NHibernate映射的所有實體,並通過使用它們的類元數據確定哪些類型引用區域設置類型。然後,我爲該引用類型構建一個查詢(使用ICriteria),其中Locale類型的屬性等於我嘗試刪除的區域設置的Id。任何返回的對象,我將該屬性設置爲null,然後更新它們。
問題:有沒有更好的方法 - 希望使用內置NHibernate的東西 - 指示一個對象刪除所有對自身的引用?
對象:
public class Parent
{
public virtual Guid Id { get; set; }
public virtual Locale Loc { get; set; }
}
public class Locale
{
public virtual Guid Id { get; set; }
}
映射:
public class ParentMapping : ClassMap<Parent>
{
Id(x => x.Id).GeneratedBy.Guid();
References(x => x.Loc).Nullable();
}
public class LocaleMapping : ClassMap<Locale>
{
Id(x => x.Id).GeneratedBy.Guid();
}
我認爲你映射是錯誤的。兩者都映射到。此關係中的小p父母是Locale。在映射中,引用是多對一的映射,其中語言環境是一個映射。你有沒有想過如何使映射雙向回到Locale?設置關係的級聯。 –
Fran
我很抱歉。我知道我會在某個地方犯一個錯字。我糾正了它。它應該是'LocaleMapping:ClassMap'。當你說雙向時,你的意思是地區實體瞭解所有擁有它的父母,對嗎? –
因爲我知道所有擁有它的父母的地方實體,我避而遠之的原因是它很難僅加載沒有所有其他信息的Locale。我希望區域設置儘可能乾淨。 –