NHibernate&;数据库强制执行的时间关系

NHibernate&;数据库强制执行的时间关系,nhibernate,Nhibernate,这肯定是其他人遇到的情况,所以我想我应该问这个问题。对于nHibernate中表示时间关系的问题,人们是否实现了良好的通用解决方案。这个问题存在于我无法控制的数据库中,所以请不要告诉我DB模型不正确。我不能改变它 我们有一个简单的父子关系,孩子的有效时间必须在父母的有效时间内。简单地将Parent.ValidFrom=Child.ValidTo放入。该规则在数据库中强制执行,这意味着我不能发出导致记录违反该规则的UPDATE语句。这是不可谈判的 重要的是,这意味着这会影响我将更改写入数据库的顺序

这肯定是其他人遇到的情况,所以我想我应该问这个问题。对于nHibernate中表示时间关系的问题,人们是否实现了良好的通用解决方案。这个问题存在于我无法控制的数据库中,所以请不要告诉我DB模型不正确。我不能改变它

我们有一个简单的父子关系,孩子的有效时间必须在父母的有效时间内。简单地将Parent.ValidFrom=Child.ValidTo放入。该规则在数据库中强制执行,这意味着我不能发出导致记录违反该规则的UPDATE语句。这是不可谈判的

重要的是,这意味着这会影响我将更改写入数据库的顺序

  • 展开子项=2个更新。
    我展开父项。
    二,。展开子对象
  • 收缩父项=2次更新。
    我与孩子签约。
    二,。与父母签约
  • 将父项和子项移动到将来的日期=3次更新。
    我将父级有效更改为。
    二,。移动孩子。
    iii.将Parent.ValidFrom移动
  • 将父项和子项移动到过去的日期=3次更新。
    我更改父项有效起始日期。
    二,。移动孩子。
    iii.将Parent.ValidTo移动到
  • 因此,我们可以看到更新发生的顺序非常重要。我们不能仅仅依靠nHibernate的默认更新。此外,在某些情况下,我们需要对单个实体进行两次更新,而nHibernate通常会进行一次更新

    因此,我希望能够在我的域模型中表达一个通用的时态父对象:子对象(可能使用[attribute]修饰类),并让一些代码为我完成这项艰巨的工作

    有人遇到过这个问题吗?有人能给点建议吗


    请再次记住,我无法控制我的DB模式,我想写一些通用的东西,可以应用于我的整个模型。唯一需要注意的是,我只关心提交我在内存中修改过的对象。因此,我不希望编写一些代码来确定正确的ValidFrom/ValidTo日期。

    由于您无法控制NH发布更新语句的顺序,最好的做法可能是使用
    IStatelessSession
    手动执行更新

    你基本上放弃了变化跟踪;您需要告诉NH要更新哪个对象