标签: hibernate nhibernate
我们有一个自定义连接字符串提供程序,它根据当前上下文连接到不同的数据库。
这样做会对所有数据库使用相同的SessionFactory。
假设我们可能在不同数据库中拥有具有相同标识符(即主键)的实体,那么在从第一级或第二级缓存中检索项时是否会考虑这一点?
因此,如果Db-1的Entity-1位于二级缓存中,并且我请求Db-2的Entity-1将NHibernate从缓存(不正确)或Db-2数据库(正确)加载实体。
答案 0 :(得分:1)
经过一番研究(即here):
第一级或第二级缓存不使用数据库名称/模式来检索实体。
虽然二级缓存与会话工厂绑定,但不保证您使用的缓存提供程序已被分区(请参阅here)。
对此的解决方案(假设缓存提供程序支持它)是将缓存的RegionPrefix设置为每个租户唯一。
RegionPrefix