首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NHibernate SysCache2 -依赖关系中断缓存

NHibernate SysCache2 -依赖关系中断缓存
EN

Stack Overflow用户
提问于 2014-05-14 13:57:50
回答 1查看 512关注 0票数 1

公司类别:

代码语言:javascript
复制
class Company {
  public virtual int Id { get;set;}
  public virtual string Name { get;set;}
  public virtual int IntProp { get;set;}
}

公司表:

代码语言:javascript
复制
CREATE TABLE Companies (
  Id INT PRIMARY KEY,
  Name NVARCHAR(50) NOT NULL,
  IntProp INT NULL );

这是我的web.config:

代码语言:javascript
复制
<syscache2>
    <cacheRegion name="RefData"></cacheRegion>
    <cacheRegion name="Company">
        <dependencies>
            <commands>
                <add name="CompanyCommand"
                         command="SELECT * FROM Companies WHERE Deleted = 0"
        />
            </commands>
        </dependencies>
    </cacheRegion>
</syscache2>

问题: RefData缓存区域中的其他实体(这些实体永远不会改变、思考国家等)都缓存得很好。另一方面,公司则不是。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-14 13:57:50

解决办法包括解决多个问题:

  1. IntProp在表上是可空的,而属性不是空的int。这导致NHibernate无法在获得一行时设置NULL,因此属性值变为0。当会话刷新时,它会看到一个修改(NULL到0),并抛出修改只读数据的异常。(这是NH设计缺陷,IMO)
  2. 依赖查询选择所有列(*),依赖机制不支持这些列。相反,必须列出每一列。(这又是SQL设计的一个缺陷,IMO)
  3. 依赖查询FROM子句有表名,但省略架构名称,这也不受支持。添加dbo.修复了它。我花了4个小时才找到这个。(同样,静默失败,SQL缺陷)
  4. 进入生产通道后,出现了用户权限错误。这些可以通过以下http://social.technet.microsoft.com/Forums/exchange/en-US/99321f54-1fef-4860-9fe9-5966a46fe582/once-for-all-right-permissions-for-sqldependency-please来修复

希望这能帮上忙。

PS。根据请求,最终结果:

代码语言:javascript
复制
class Company {
  public virtual int Id { get;set;}
  public virtual string Name { get;set;}
  public virtual int? IntProp { get;set;}
}

<syscache2>
    <cacheRegion name="RefData"></cacheRegion>
    <cacheRegion name="Company">
        <dependencies>
            <commands>
                <add name="CompanyCommand"
                         command="SELECT Id, Name, IntProp FROM dbo.Companies WHERE Deleted = 0"
        />
            </commands>
        </dependencies>
    </cacheRegion>
</syscache2>
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23656803

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档