我们有一个自定义的连接字符串提供程序,它根据当前上下文连接到不同的数据库。
这样做会对所有数据库使用相同的SessionFactory。
假设我们在不同的数据库中可能有具有相同标识符(即主键)的实体,当从一级或二级缓存检索项时,是否考虑到这一点?
因此,如果Db-1的Entity-1在二级缓存中,并且我请求Db-2的Entity-1将从缓存(错误)或Db-2数据库(正确) NHibernate加载实体。
发布于 2012-01-27 22:51:58
经过更多的研究(即here):
第一级或第二级高速缓存均未使用数据库名称/架构来检索实体。
虽然二级缓存绑定到会话工厂,但不能保证您使用的缓存提供程序是分区的(请参阅here)。
这个问题的解决方案(假设缓存提供程序支持)是将缓存的RegionPrefix设置为每个租户唯一的。
https://stackoverflow.com/questions/9023449
复制相似问题