【问题标题】:Put transient entity in cache without persisting it将瞬态实体放入缓存而不持久化它
【发布时间】:2011-05-13 01:10:42
【问题描述】:

我有一个方法负责加载类似于 DAO 的实体。如果找不到实体,则该方法应该创建一个新实体并返回它。但是,新实体现在不应该被持久化。

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

【问题讨论】:

    标签: c# nhibernate


    【解决方案1】:

    虽然可以向 PersistenceContext 添加一个状态为 Gone 的实体。这是否能完成您可能想要的事情是值得怀疑的,更不用说滚动您自己的临时对象缓存会比尝试调用此 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)
    

    【讨论】:

    • 同意。我不认为我想在这里弄乱 NHibernate 缓存。滚动自己的缓存并在准备好时持久化对象要简单得多。
    猜你喜欢
    • 2014-11-22
    • 1970-01-01
    • 1970-01-01
    • 2018-07-12
    • 1970-01-01
    • 2015-04-08
    • 2015-11-15
    • 1970-01-01
    • 2014-11-27
    相关资源
    最近更新 更多