gpt4 book ai didi

NHibernate:如何忽略缓存并直接进入数据库?

转载 作者:行者123 更新时间:2023-12-03 09:45:52 24 4
gpt4 key购买 nike

考虑一个典型的 NHibernate 上下文类。

public class SampleContext : NHibernateContext
{
public SampleContext(ISession session)
: base(session)
{ }

public IQueryable<Person> People
{
get { return Session.Linq<Person>(); }
}

public Person GetPerson(int id)
{
get { return Session.Linq<Person>().SingleOrDefault(p => p.ID == id); }
}
}

我的问题:

  • How could I rewrite the GetPerson method to ignore the cache and retrieve data directly from the database?

最佳答案

有几种方法可以解决这个问题:

  • Hibernate 人员会告诉您,您可能应该打开一个不同的 session 以便从数据库中检索最新数据。他们会指出,本次 session 的目的是针对一个相对短暂的工作单元。
  • 您可以调用 Session.Refresh() 的电话在您的GetPerson() 内始终从数据库获取最新状态的方法,或者您可以通过自己的 Refresh() 公开该功能方法。
  • 或者,如果您有 Person 的句柄对象本身,您也可以尝试 Session.Evict()删除 Person在再次加载之前对象您的 session 缓存。

  • 以我的经验,我已经尝试过 #2 和 #3 并且最终总是会尝试重构来做 #1。

    关于NHibernate:如何忽略缓存并直接进入数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1903160/

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