gpt4 book ai didi

c# - Fluent nHibernate PropertyRef 急切地获取引用的记录。我可以禁用它吗?

转载 作者:行者123 更新时间:2023-11-30 16:56:03 24 4
gpt4 key购买 nike

如果我在引用(多对一)上指定 PropertyRef - 它会急切地获取所有相关记录:

References(x => x.Panel).PropertyRef(x => x.Code).Not.Insert().Not.Update();

我可以禁用 N + 1 选择问题吗?

在这里我可以看到这个问题是已知的,但是有什么解决方法吗? Lazy loading not working for many-to-one relationship when mapping to a non-key field using property-ref

最佳答案

有一个解决方法。但只是因为您的多对一是只读的(我们以后不必关心插入/更新问题)。如何?通过引入虚拟实体,例如面板 View

// Readonly mapping, virtual class
// which ID role is playing column panel_CODE
public PanelViewMapping()
{
Table("panel-table");
Id(x => x.Code)
.Column("panel_CODE")
.GeneratedBy.Assigned();
...

现在,我们必须调整 POCO 实体:

// instead of this
// public virtual Panel Panel { get; set; }
// we will have this
public virtual PanelView Panel { get; set; }

然后我们可以将它用作主键映射:

References(x => x.Panel)
//.PropertyRef(x => x.Code)
.Not.Insert()
.Not.Update();

并且所有功能(延迟加载)都将正常工作。

关于c# - Fluent nHibernate PropertyRef 急切地获取引用的记录。我可以禁用它吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28504734/

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