【问题标题】:Restricting deletion with NHibernate使用 NHibernate 限制删除
【发布时间】:2010-04-22 10:12:30
【问题描述】:

我正在使用 NHibernate (fluent) 访问带有一堆表的旧第三方数据库,这些表没有任何明确的关联。也就是说,子表确实具有包含父表主键的 parentID 列,但没有确保这些关系的外键关系。理想情况下,我想添加一些外键,但不能触及数据库架构。

我的应用程序运行良好,但我真的很想强加一个参照完整性规则,如果父对象有子对象,则禁止删除它们,例如类似“ON DELETE RESTRICT”但由 NHibernate 维护的东西。

任何有关如何解决此问题的想法都将不胜感激。我应该查看 IInterceptor 接口上的 OnDelete() 方法,还是有其他方法可以解决这个问题?

当然,任何解决方案都会带来性能损失,但我可以忍受。

【问题讨论】:

    标签: sql nhibernate fluent-nhibernate nhibernate-mapping


    【解决方案1】:

    我想不出在 NHibernate 中执行此操作的方法,因为这需要 NHibernate 对关系有一些了解。我将使用sepecification pattern 在代码中处理这个问题。例如(使用带有指向 Employee 对象的链接的 Company 对象):

    public class CanDeleteCompanySpecification
    {
        bool IsSatisfiedBy(Company candidate)
        {
            // Check for related Employee records by loading collection
            // or using COUNT(*).
            // Return true if there are no related records and the Company can be deleted.
            // Hope that no linked Employee records are created before the delete commits.
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2011-02-28
      • 1970-01-01
      • 1970-01-01
      • 2010-11-25
      • 1970-01-01
      • 2015-10-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多