【问题标题】:Is there a way to delete all foreign entities when i delete a record using NHibernate?当我使用 NHibernate 删除记录时,有没有办法删除所有外部实体?
【发布时间】:2011-04-13 20:43:12
【问题描述】:

我最近开始为我的数据层使用 Fluent Nhibernate,但遇到了一个问题。每当我想删除具有多个外键约束的记录时,我必须创建另一个类来表示该数据库实体。这意味着对于像用户记录这样的东西,它与许多其他表有关系,我必须创建类似 10 个不同的类,我永远不会将其用于任何其他目的。至少这是我对事物运作方式的理解。

有没有办法让我删除所有这些记录而不必映射它们。例如,使用用户示例,用户可以具有多个角色、部门、电子邮件地址、电话号码、地址等。我想删除所有这些记录,但不必将它们全部映射到 Nhibernate 类中。

我可以在我的 UserMapping 上设置一个属性来完成这个吗?

谢谢!

【问题讨论】:

  • 你可以使用魔法。这是让框架在您尝试隐藏它时猜测您的意图的最佳方式。更多信息hogwarts.ac.uk

标签: nhibernate mapping foreign-keys foreign-key-relationship cascading-deletes


【解决方案1】:

如果这些实体没有被映射,NHibernate 就不可能知道它们。但您可以选择以下备选方案之一:

  • 设置FK cascades at the database level(如果您的数据库支持)
  • 使用数据库触发器手动编码级联(如果您的数据库支持触发器)
  • 使用 IPostDeleteEventListener(类似于数据库触发器,但在 NHibernate 级别)手动编码级联。

【讨论】:

  • 感谢您的回复。我真的希望有某种幕后魔术可以读取架构并在必要时级联删除,但是是的,我可以看到这是不切实际的。我想我要做的是创建必要的类,并且只映射我必须的属性。
猜你喜欢
  • 2021-01-24
  • 2013-06-09
  • 1970-01-01
  • 2011-02-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-01
  • 2011-11-06
相关资源
最近更新 更多