Nhibernate QueryOver Enum Флаги - PullRequest
       1

Nhibernate QueryOver Enum Флаги

6 голосов
/ 06 апреля 2011

Попытка использовать QueryOver и помеченный запрос перечисления. Это работает в Nhibernate.Linq:

var results = repo.Query()
  .Where(x => (x.Classification & LineItemClassification.Shipping) == LineItemClassification.Shipping);

Это выдает Could not determine member from (Convert(x.Classification) & 2) с использованием QueryOver:

 var results = repo.QueryOver()
   .Where(x => (x.Classification & LineItemClassification.Shipping) == LineItemClassification.Shipping);

Есть идеи? Предложения?

Enum:

[Flags]
public enum LineItemClassification
{
        Foo,
        Widget,
        Shipping
}

Отображение:

Map(x => x.Classification)
  .CustomType<LineItemClassification>();

1 Ответ

3 голосов
/ 04 мая 2011

Я столкнулся с подобной проблемой сегодня и закончил делать прогноз SQL.Не идеально, так как это уводит нас от безопасности типов, которую мы получаем с помощью API QueryOver, но это работает.Ниже приведена соответствующая часть моего кода.

.QueryOver<ProjectActivity>()
.Where(Expression.Gt(Projections.SqlProjection(String.Format("({{alias}}.ProjectActivityTypeId & {0}) as ProjectActivityTypeId", (int)type), null, null), 0))

Надеюсь, это поможет.

...