gpt4 book ai didi

c# - NHibernate 的二级缓存和模式更改的错误

转载 作者:行者123 更新时间:2023-11-30 18:38:51 25 4
gpt4 key购买 nike

我有一个使用 NHibernate 映射并缓存在二级缓存 (memcached) 中的“公司”类。我们的团队最近向此类添加了一个新的 bool 属性,该属性将存储在数据库中。

在我们的开发环境中一切正常,但是一旦我们部署到我们的暂存环境(共享实时数据库),我们就开始收到以下错误:

System.IndexOutOfRangeException: Index was outside the bounds of the array.
at (Object , Object[] , SetterCallback )
at NHibernate.Tuple.Entity.PocoEntityTuplizer.SetPropertyValuesWithOptimizer(Object entity, Object[] values)
at NHibernate.Tuple.Entity.PocoEntityTuplizer.SetPropertyValues(Object entity, Object[] values)
at NHibernate.Persister.Entity.AbstractEntityPersister.SetPropertyValues(Object obj, Object[] values, EntityMode entityMode)
at NHibernate.Cache.Entry.CacheEntry.Assemble(Object[] values, Object result, Object id, IEntityPersister persister, IInterceptor interceptor, ISessionImplementor session)
at NHibernate.Cache.Entry.CacheEntry.Assemble(Object instance, Object id, IEntityPersister persister, IInterceptor interceptor, ISessionImplementor session)
at NHibernate.Event.Default.DefaultLoadEventListener.AssembleCacheEntry(CacheEntry entry, Object id, IEntityPersister persister, LoadEvent event)
at NHibernate.Event.Default.DefaultLoadEventListener.LoadFromSecondLevelCache(LoadEvent event, IEntityPersister persister, LoadType options)
at NHibernate.Event.Default.DefaultLoadEventListener.DoLoad(LoadEvent event, IEntityPersister persister, EntityKey keyToLoad, LoadType options)

我最好的猜测是 NHibernate 不能将旧的缓存条目(没有新属性)反序列化到新的 Company 对象中。我相信我确认了这一点,因为我在我们的暂存环境中禁用了二级缓存并且 ISE 停止了。

所以我想我的问题是,如果 NHibernate 不能反序列化缓存条目而不是抛出异常,我们如何才能强制 NHibernate 进入数据库?还有其他人遇到过这个问题吗?

我认为现在,我们必须在关闭二级缓存的情况下进行部署,重新启动 memcached 服务器,然后重新启用二级缓存。然而,这个解决方案并不理想。如果有人有更好的建议,我将不胜感激。

最佳答案

作为任何感兴趣的人的更新,我按照我的帖子中列出的步骤进行操作:

[...] we're going to have to deploy with second-level caching turned off, restart the memcached servers and then re-enable second-level caching.

...一切正常。它比我们的正常部署要复杂一些,但我们没有出现任何错误。

关于c# - NHibernate 的二级缓存和模式更改的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10837206/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com