gpt4 book ai didi

nhibernate - Fluent-Nhibernate 引用和 PropertyRef 使用延迟加载进行选择

转载 作者:行者123 更新时间:2023-12-02 00:35:20 25 4
gpt4 key购买 nike

我正在为我的 References 属性之一使用 PropertyRef。使用 LazyLoad() 它仍然执行 Select 并加载 User 实体,即使我从未“点击”SalesPerson 属性。

订单映射

Id(x => x.Id).GeneratedBy.Native();
References(x => x.SalesPerson)
.LazyLoad()
.PropertyRef(x => x.Username)
.Column("rsm");
Map(x => x.Title);

订单类

public class Order : BaseEntity
{
...
public virtual User SalesPerson { get; set; }
public virtual string Title { get; set; }
...
}

用户映射

Id(x => x.Id).GeneratedBy.Native();
Map(x => x.Username).Column("login");

用户类

public class User : BaseEntity
{
public virtual string Username { get; set; }
...
}

生成的订单映射

<many-to-one class="Project.User" lazy="proxy" name="SalesPerson" property-ref="Username">
<column name="rsm" />
</many-to-one>

执行代码

var order = session.Get<Order>(1);
Console.WriteLine(order.Title);

当我不使用 User 实体时,有没有办法阻止 Select 加载 User 实体?

最佳答案

与 property-ref 有关,请参阅 NHibernate creates proxy via session.Load(), but not via Linq or Criteria API

不是你问的,但也考虑到如果你子类化用户,多对一代理不允许你做类型检查,见 http://ayende.com/Blog/archive/2010/01/28/nhibernate-new-feature-no-proxy-associations.aspx

关于nhibernate - Fluent-Nhibernate 引用和 PropertyRef 使用延迟加载进行选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4888140/

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