如何使用NHibernate获取基于Id的结果

时间:2010-08-10 14:31:10

标签: c# nhibernate

我正在尝试使用以下代码从NHibernate获取Wrapper:

    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 :(得分:0)

这有效:

    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;
    }