gpt4 book ai didi

.net - SetFetchMode 调用被忽略

转载 作者:行者123 更新时间:2023-12-02 00:37:49 26 4
gpt4 key购买 nike

我在以下查询的 Criteria API 中调用 SetFetchMode 时遇到问题:

DetachedCriteria.For<User>()
.Add<User>(u => u.Status == UserStatus.Live)
.CreateAlias("UniqueId", "uid")
.CreateAlias("Companies", "comp")
.Add(Restrictions.Disjunction()
.Add(Restrictions.Like("uid.Uid", context.Text, MatchMode.Anywhere))
.Add(Restrictions.Like("comp.Name", context.Text, MatchMode.Anywhere)))
.SetFetchMode("Companies", FetchMode.Eager));

我的类(class):

public class User : EntityBase<int>
{
public virtual UniqueId UniqueId { get; set; }

public virtual ISet<Company> Companies { get; set; }
}

public class Company : EntityBase<int>
{
public virtual string Name { get; set; }
}

public class UniqueId : EntityBase<int>
{
public virtual string Uid { get; set; }
}

和映射

public sealed class UserMap : ClassMap<User>
{
public UserMap()
{
Table("users");

Id(x => x.Id).GeneratedBy.Native().Column("id");

References(x => x.UniqueId).Column("int_unique_id_ref");

HasMany(x => x.Companies)
.KeyColumn("user_id")
.Inverse()
.AsSet();
}
}

public sealed class CompanyMap : ClassMap<Company>
{
public CompanyMap()
{
Table("company");

Id(x => x.Id).GeneratedBy.Native().Column("id");

Map(x => x.Name).Column("name");
}
}

public sealed class UniqueIdMap : ClassMap<UniqueId>
{
public UniqueIdMap()
{
Table("tbl_trading_partner_unique_id");

Id(x => x.Id).GeneratedBy.Native().Column("int_id");

Map(x => x.Uid).Column("str_unique_id");
}
}

但在获取用户列表后,Nhibernate 再次查询数据库以再次获取每个用户的公司集合。 NHibernate 只是忽略了 SetFetchMode 的调用,因为我试图写这样的东西:

.SetFetchMode("NotExistingProp", FetchMode.Eager)

Nhibernate 不会抛出任何异常。

我也曾尝试在映射中将 Lazy 设置为 false,但也无济于事。不知道如何修复它,有人可以

然后 Nhibernate 加载了带有实体的集合。但是他还是忽略了SetFetchMode,我可以在那里写任何东西。

最佳答案

解决方案不是那么明显。我们变了

.CreateAlias("Companies", "comp")

.CreateAlias("Companies", "comp", JoinType.LeftOuterJoin)

关于.net - SetFetchMode 调用被忽略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3889402/

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