当前位置:  开发笔记 > 编程语言 > 正文

nHibernate Master Detail删除

如何解决《nHibernateMasterDetail删除》经验,为你挑选了2个好方法。

我配置了Master Detail关系.hbm文件如下.当我运行这样的代码

Favourite favourite = favourites.Find(f => f.Id== id);
user.Favourites.Remove(favourite);
m_UserRepository.Save(ref user);

我收到错误消息

NHibernate.Exceptions.GenericADOException:无法删除集合行:[Model.Entities.User.Favourites#249] [SQL:SQL不可用] ---> System.Data.SqlClient.SqlException:无法将值NULL插入列' UserId',表'BE.Favourite'; 列不允许空值.更新失败.

关于这意味着什么的任何建议请帮忙.



  
    
      
    
    

    
      
      
    

  

James Gregor.. 6

你试过inverse="true"装袋吗?



1> James Gregor..:

你试过inverse="true"装袋吗?



2> F.D.Castel..:

在这种情况下,您实际上需要多对多关系:


  
    
      object_sequence
    
  
  
  
  
    
    
  

而另一方面则相同:(*注意逆="真")


  
    
      object_sequence
    
  
  
  
  
    
    
  

从NHibernate 2.0文档:

非常重要注意:如果声明关联的列NOT NULL,NHibernate在创建或更新关联时可能会导致约束违规.要防止出现此问题,必须使用标记为的多值结束(集合或包)的双向关联inverse="true".请参阅本章后面的双向关联讨论.

最后,我不确定你是否真的想在这里使用一个包.一个用户可以拥有两次或更多次相同的收藏?

PS:另外,请注意,lazy ="true"是自NHibernate 1.2以来的默认行为.

推荐阅读
kikokikolove
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有