Как получить результат на основе идентификатора с помощью NHibernate - PullRequest
0 голосов
/ 10 августа 2010

Я пытаюсь получить Wrapper от NHibernate со следующим кодом:

    public Wrapper GetWrapper(int siteId, string actionName)
    {
        Wrapper wrapper = _session.CreateCriteria<Wrapper>()
            //.Add(SqlExpression.Like<Wrapper>(xx => xx.SiteId, siteId))                
            .Add(SqlExpression.Equals(xx => xx.SiteId, siteId))
            .Add(SqlExpression.Like<Wrapper>(xx => xx.Action, actionName))
            .List<Wrapper>().FirstOrDefault();

        return wrapper;
    }

Бит, который закомментирован:

.Add(SqlExpression.Like<Wrapper>(xx => xx.SiteId, siteId))

неэффективен,Мне нужно получить Wrapper там, где Wrapper.SiteId == siteId, а не там, где он Like siteId.Должен отметить, что siteId не является первичным ключом.Может кто-нибудь сказать мне, что я могу сделать, чтобы улучшить это?Спасибо

1 Ответ

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

Это сработало:

    public Wrapper GetWrapper(int siteId, string actionName)
    {
        Wrapper wrapper = _session.CreateCriteria<Wrapper>()
            .Add<Wrapper>(x => x.SiteId == siteId)
            .Add<Wrapper>(x => x.Action == actionName)
            .List<Wrapper>().FirstOrDefault();

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