2012-02-01 88 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

相关问题