2010-08-10 8 views
0

Je suis en train d'obtenir un wrapper de NHibernate avec le code suivant:Comment obtenir un résultat basé sur Id avec 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; 
    } 

Le bit qui a commenté:

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

est inefficace. J'ai besoin d'obtenir le Wrapper où le Wrapper.SiteId == siteId, pas où c'est Like siteId. Je devrais noter que siteId n'est pas une clé primaire. Quelqu'un peut-il me dire ce que je peux faire pour améliorer cela? Merci

Répondre

0

Cela a fonctionné:

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