有没有办法让NHibernate通知查看缓存从视图中失效?

时间:2013-06-18 11:53:15

标签: nhibernate

我从连接表中查看了视图,并且我希望在更新视图的基表时(在ORM上下文中)使其第二级查询缓存无效。该视图像NHibernate

上的表一样映射

这对NHibernate有可能吗?如何在xml映射上完成此操作? Fluent映射也会这样做

1 个答案:

答案 0 :(得分:6)

信不信由你,NHibernate即使这样也是可能的。如果您的示例类映射如下:

<class name="Contact" table="[dbo].[Contact]" lazy="true" >
    <cache usage="read-write" region="ShortTerm"/>

表格[dbo].[Contact]顶部有一个视图,它被映射到另一个类:

<class name="ViewContact" table="[dbo].[ViewContact]" lazy="true" >
    <cache usage="read-write" region="ShortTerm"/>
    <!-- at this moment the View and table are treated differently -->

然后,魔术设置直接位于<cache>之下,并被称为 <synchronize>

<class name="ViewContact" table="[dbo].[ViewContact]" lazy="true" >
    <cache usage="read-write" region="ShortTerm"/>
    <synchronize table="[dbo].[Contact]"/>
    <!-- now both caches are synchornized -->

现在,对映射类 Contact 的任何更改也会触发映射到视图的 ViewContact 类的缓存清理