Я пытаюсь применить фильтр (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; }
}
С пользовательской картой:
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");
}
Это на самом деле работает прямо сейчас, но, как вы можете видеть, я должен включить псевдоним "this_1_" для таблицы CompanyUser в фильтре ... это звучит неправильно, но если я оставлю фильтр как определяется в классе FilterDefinition Я получаю Sql с:
where this.CompanyId = ?p0
, который не отображается, так как столбец CompanyId исходит из другой проекции (CompanyUser as this_1 _)
Есть ли способ исправить это и позволить nhibernate определить правильный псевдоним для фильтра?
Заранее спасибо за любую помощь.