вопрос старый, но все равно.У меня была такая же проблема (устаревшая БД, не разрешалось менять схему).Если он находится в предложении where, nhibernate использует псевдоним первой таблицы, который выдает ошибку.
Мое решение состояло в том, чтобы определить представление для объединения, а затем использовать представление в качестве объединенной таблицы.Столбец, который не может быть указан в предложении where, также отображается (так что вставки также работают).В вашем случае представление может быть:
CREATE VIEW FilteredOperations
SELECT OP.PHASE_S, OP.DESCRIPTION, OP.OPERATION_KIND
FROM GG.OPERATIONS OP
WHERE OP.OPERATION_KIND = 'TASK';
My Fluent mappings:
public class Agency : EntityBase
{
public const string AgencyRoleId = "F1776564-1CA0-11d5-A70C-00A0120802D7";
public Agency()
{
CountryId = "de";
LanguageId = "de";
}
public virtual string AgencyId { get; set; }
public virtual string Name { get; set; }
public virtual string UserDefinedName { get; set; }
public virtual string LanguageId { get; set; }
public virtual string CountryId { get; set; }
public virtual string RoleId
{
get
{
return AgencyRoleId;
}
set {}
}
}
public AgencyMap()
{
Table("mgmt_location_102");
Id(x => x.AgencyId, "LocationId").GeneratedBy.UuidHex("D");
Map(x => x.CountryId, "CountryId");
Map(x => x.LanguageId, "LanguageId");
Map(x => x.Name,"CommonName");
Join("mgmt_agency_ext", x=>
{
x.Optional();
x.KeyColumn("AgencyLocationId");
x.Map(y => y.UserDefinedName, "AgencyUserDefinedName");
});
Join("scs2.vAgencyRoles", x =>
{
x.KeyColumn("LocationId");
x.Map(y => y.RoleId, "RoleId").Not.Update();
});
}