Nhibernate / Linq: NHibernate.QueryException: не удалось разрешить свойство: Profile.class of: MyNamespace.MyObject

У меня проблема с моим запросом linq. Я пытаюсь фильтровать объекты на основе выбранных значений. Мы используем модель запроса, которая возвращает выражение System.Linq.Expressions.Expression и использует его для создания запроса nhibernate. Вот мое выражение linq.

x =>(request.InitialLoad
     || (!request.InitialLoad
         && (Enum.GetValues(typeof(MyType)).Length == request.MyTypes.Length
             ||
             (Enum.GetValues(typeof(MyType)).Length != request.MyTypes.Length
              &&
              ((request.MyTypes.Contains((int)MyType.Referrals)
                && x.Post.PostType == StatusPostType.Referral)
               ||
               (request.MyTypes.Contains((int)MyType.Businesses)
                && x.Post.Profile is BusinessProfile)
               ||
               (request.MyTypes.Contains((int)MyType.Members) 
                && x.Post.Profile is UserProfile)
              )
             )
            )
        )
    )
    && x.Profile.Equals(request.Profile);

Отображения (мы используем бегло) выглядят так:

MyObject (свойство Post):

References(x => x.Post, "PostId");

MyObject.Post (Свойство профиля):

References(x => x.Profile, "ProfileId");

Когда я меняюx.Post.Profile is SomeType вx.Post.Profile.GetType() == typeof(SomeType) он выдает другую ошибку, которая

System.ArgumentOutOfRangeException: индекс был вне диапазона. Должен быть неотрицательным и меньшим, чем размер коллекции. Имя параметра: индекс

Когда я убираю логические выражения сравнения типов и оставляю их только в выражении Referrals, он отлично работает для фильтрации только по одному варианту.

Свойства никак не изменяются моделью. Это виртуальные свойства со значением get / set по умолчанию.

Есть идеи?

Ответы на вопрос(1)

Ваш ответ на вопрос