2012-02-01 83 views
2

我有實體領地如果沒有HasMany,是否可以將外鍵設置爲null?

class Territory 
    { 
     public int Id {get;set;} 
     public string Title {get;set;} 
    } 

和一些實體具有對它的引用,如

class MyObject 
    { 
     public Territory Territory {get;set;} 
    } 

和映射FluentNHibernate

References(x => x.Territory) 
      .Column("TerritoryId") 
      .Nullable()     
      .Not.LazyLoad() 
      .Cascade.None(); 

,當我刪除我的領土有錯誤:DELETE語句與參考約束「FK377ABC4DAD038F1B」衝突。數據庫「GPM_Test」,表「dbo.MyObject」,列「TerritoryId」發生衝突。

如何在刪除區域之前將nhibernate設置爲NULL?

我需要像SQL

ON DELETE set NULL 

回答

0

我會說你要刪除的實體之間的聯繫第一,然後才能刪除對象本身,這可以ofcourse可以通過級聯刪除數據庫做了什麼。另一種方法是編程刪除要刪除的實體和相關表之間的鏈接。

+0

因此,在我刪除我的領土實體之前,我需要寫myObject.Territory = null,並且我可以如何管理所有實體引用區域? – syned 2012-02-01 12:02:57

+0

我不知道你的數據庫設計,但據我所知它是一個直接鏈接。因此,首先更新Territory ID設置爲您要刪除的區域的所有對象。 linq語句可能如下所示: 'context.MyObject.Where(obj => obj.TerritoryId == [TerritoyID_to_remove])' – DerDee 2012-02-01 12:32:19

相關問題