【发布时间】:2021-10-08 17:02:06
【问题描述】:
我有一些遗留代码对大量“静态”记录进行大量延迟加载,并在 NHibernate Profiler 中产生大量 N+1 警报,我正在尝试修复这些警报。我发现通过配置二级缓存,它修复了许多 N+1,但许多仍然存在,因为实体被 他们的 ID 之外的东西访问,即外键值子实体指回其父实体,而不是子实体的主键。我的理解是,只有在实体通过 ID 访问时才使用二级缓存。我试图消除尽可能多的 N+1 问题,同时尽可能减少遗留代码中的代码更改。
有没有办法在 NHibernate 中缩短延迟加载,以便在调用 NHibernate 的延迟加载代码来执行数据库查询之前执行自定义代码?类似以下内容?
public class Customer
{
public virtual IList<SomeStaticData> Foo
{
get
{
return CachedStuff.GetStaticData() ?? InvokeNHibernateLazyLoad();
}
set;
}
【问题讨论】:
标签: nhibernate fluent-nhibernate