![]() |
1
2
实际上,我们有一个可行的解决方案,如果我工作,但它有效地杀死了一部分NHibernate的机制。 对于“临时实体”,nh仅充当插入/选择引擎。删除和更新由另一个实用程序完成,nh的orm部分很方便。 如果您只有少量的时间实体,那么您可以只使用nhibernate,但要准备好编写自己的代码,以确保状态关系是有效的。 我们在第一次尝试中就走了这条路,在时间实体的数量开始增加之后,这个机制就被有效地打破了。 现在,插入不需要特殊的工具,只需将值放在适当的datetime属性中,就可以设置了。我们使用过滤器实现select(当然要检查nh ref的16.1,因为它有一个例子,但是条件不能使用between),尽管这样做的话 将 必须修改nh源代码,以便对所有类型的选择应用过滤器。 查看我的帖子 http://savale.blogspot.com/2010/01/enabling-filters-on-mapped-entities.html 因为那样做。 如果您在映射上指定了“where”子句(而不是过滤器),但我还没有尝试或测试它,而且据我所知,映射上映射的“where”不支持参数(至少官方不支持)。 如我所说,一旦你阅读了Richard Snodgrass关于时态数据库的书籍,使用自定义工具进行更新/删除的原因就会变得很清楚 http://www.cs.arizona.edu/~rts/publications.html 直接回答你的问题 无效的 _结束值和一个远在将来的值将起作用(但更喜欢非空的解决方案,它将使您的查询更容易,因为您不必使用isnull进行检查)。 对于更新,您可以有效地克隆原始实体,然后将原始实体的“结束”设置为“现在”,然后转到克隆的并更改相关属性,将“开始”更改为“现在”,将“结束”更改为“将来很远的”值。 |
![]() |
2
1
我建议最好的 timeNarrative 马丁·福勒的信。 |
![]() |
3
0
我认为最好的方法是有点像Java地图(对不起,我是Java程序员),让NHiBiNATE来映射它。映射将类似于句点的内容(带有“开始”和“结束”字段)映射到一个值。您可以编写一个usertype来将句点映射到两个不同的数据库列 |