将暂时性实体放入缓存中而不保留它

本文关键字:保留 缓存 暂时性 实体 | 更新日期: 2023-09-27 17:56:09

我有一个负责加载实体的方法,有点像DAO。如果未找到实体,则该方法应创建一个新实体并返回该实体。但是,新实体目前不应保留。

问题在于,可能会再次调用该方法以获取同一会话范围内的同一实体,然后它应该返回先前创建(但未持久)的实体。是否可以将实体放在 NHibernate 的缓存中,以便它可以找到它(无需保留它),或者我是否需要实现自己的缓存机制来处理新实体?

将暂时性实体放入缓存中而不保留它

虽然可以将状态为"消失"的实体添加到 PersistenceContext 中。这是否会完成您可能想要的仍然是可疑的,更不用说滚动自己的临时对象缓存比尝试调用此 API 要简单得多。

public EntityEntry AddEntry(object entity, Status status, object[] loadedState, 
                            object rowId, object id, object version, 
                            LockMode lockMode, bool existsInDatabase, 
                            IEntityPersister persister, 
                            bool disableVersionIncrement, 
                            bool lazyPropertiesAreUnfetched)