Передать выражение в качестве параметра в общий метод и вставить выражение в CreateCriteria? - PullRequest
0 голосов
/ 10 августа 2010

У меня есть универсальный метод, который существует в EntityRepository, который получает сущности по имени, который определяется следующим образом:

    public IEnumerable<T> GetEntitiesByName<T>(string searchExpression)
        where T : class, ISearchableEntity, new()
    {
            return  _session.CreateCriteria<T>()
                .Add(LambdaSubquery.Property<Fund>(x => x.Id)
                .AddNameSearchCriteria<T>(searchExpression)
                .List<T>();
    }

Существует ряд служб, использующих этот метод, и все было в порядке ... но теперь у меня есть требование, чтобы некоторые службы требовали более определенных возможностей поиска, чем доступно в этом методе.

Так что мне интересно, могу ли я передать DetachedCriteria как выражение (или что-то еще), которое я мог бы включить в запрос? Каждый сервис, которому нужны разные функции, может передать нужное ему выражение.

Я не очень хорошо знаком с NHibernate или Expressions, так что я мог бы быть здесь не в себе. Я в основном пытаюсь понять, что возможно. В противном случае мне придется отказаться от универсального метода в пользу более конкретных методов репозитория для каждого сервиса. Спасибо.

1 Ответ

0 голосов
/ 10 августа 2010

Я отправил пример кода в мой ответ на несколько похожий вопрос , который может вам помочь. Однако это только грубое начало. Если вы действительно хотите перевести полные выражения LINQ в NHibernate и иметь некоторое подобие полноты, я бы рекомендовал сначала поискать существующие решения. Быстрый поиск в Google нашел меня таким:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...