在应用程序中我有一个名为循环的参考表映射到循环实体。基本上NHibernate实体映射的大部分都保持对该表的引用。通常,这些实体有这样的字段:NHibernate的缓存选项
- StartCycle
- ModificationCycle
- EndCycle
- 周期
等
即使我用每个请求会话我仍然看到在日志大部分查询发布到周期表。当我不是通过循环ID查询,而是通过属于循环类型的其他属性时,就是这种情况。
周期类型几乎是一成不变的,它有状态属性,其实这是一个可以由服务类被改变(如CloseCycleService,开放等)的唯一属性。 另外Cycle不能被删除,但可以插入。
所以我想尽量减少查询次数到周期表。
我可以通过使用应用程序缓存将其缓存在ASP .NET中,并创建另一个抽象层,但在此之前,我想知道NHibernate提供了哪些选项以及哪些是缺点?
我看到的唯一问题是多线程 - 即使周期几乎是不可变的(和无状态的),它可能发生两个请求试图同时修改同一个实体并可能导致错误。但是......这几乎是不可能的。所以,你可以建议我可以用NHibernate做什么来将Cycles表的所有内容存储在缓存中(哦,我也没有提到该表中的数据数量很小:每个月有一个周期,所以目前它大约20行,并且每月增长1行)并且最小化发布到周期表的查询?