gpt4 book ai didi

join - 连接列上的 Fluent Nhibernate ApplyFilter

转载 作者:行者123 更新时间:2023-12-03 17:59:17 28 4
gpt4 key购买 nike

我正在尝试在从另一个表连接(和投影)的列上应用过滤器 (ApplyFilter)。我有以下实体:

public class User
{
public virtual int Id { get; private set; }
public virtual string EMail { get; set; }
...
public virtual bool IsActive { get; set; }
public virtual int CompanyId { get; set; }
}

使用用户 map :
public class UserMap : ClassMap<User>
{
public UserMap()
{
Table("Users");
Id(x => x.Id, "UserId");
Map(x => x.EMail);
...

Join("CompanyUser", r =>
{
r.KeyColumn("UserId");
r.Map(x => x.IsActive);
r.Map(x => x.CompanyId);
r.Fetch.Join();

});

ApplyFilter<CompanyFilter>("this_1_.CompanyId = :companyId");
}

这实际上现在可以工作,但是正如您所看到的,我必须在过滤器中包含 CompanyUser 表的别名“this_1_”...这听起来不正确,但是如果我保留过滤器中的定义FilterDefinition 类我得到了一个 Sql:
where this.CompanyId = ?p0

未映射,因为 CompanyId 列来自不同的投影(CompanyUser as this_1_)

有没有办法纠正这个问题,让 nhibernate 找出过滤器的正确别名?

在此先感谢您的帮助。

最佳答案

我认为您必须在连接上应用过滤器:

    Join("CompanyUser", r =>
{
r.KeyColumn("UserId");
r.Map(x => x.IsActive);
r.Map(x => x.CompanyId);
r.Fetch.Join();

}).ApplyFilter<CompanyFilter>("CompanyId = :companyId");

关于join - 连接列上的 Fluent Nhibernate ApplyFilter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5345685/

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