Когда я делаю этот запрос:
var query = from entity in session.Query<Entity>()
where entity.Status != 2
select entity;
NHibernate генерирует этот SQL:
SELECT ...
FROM TABLE_NAME ALIAS
WHERE ALIAS.SITFIL <> 2
or ALIAS.SITFIL is null /*this 'or' is the problem*/
Почему NHibernate делает это?
Редактировать : «или» вызывает проблему производительности в моем приложении
Я хочу сгенерировать только:
SELECT ...
FROM TABLE_NAME ALIAS
WHERE ALIAS.SITFIL <> 2
Без 'Или полеis null '
Отображение не может иметь значение null:
[Property(Column = "SITFIL", NotNull = true)]
public virtual TypeEnumOfProperty Status { get; set; }
Перечисление:
public enum TypeEnumOfProperty
{
[Display(Name = "Ativa", Description ="Ativo")]
Ativa = 0,
[Display(Name = "Inativa", Description = "Inativo")]
Inativa = 1,
[Display(Name = "Inativa e oculta", Description = "Inativo e oculto")]
InativaOculta = 2,
}
Редактировать: Если я изменю свойство TypeEnumOfProperty наint SQL генерируется так, как я хочу, если изменение на TypeEnumOfProperty или long сгенерировано с помощью 'или'.
Если при сравнении я использую 'equals', NHibernate генерирует предложение where без 'или'.
Кто-нибудь знает, почему и как это решить?