2011-06-23 8 views
0

sqlのテーブルのカラムを検索するフィルタを作成する必要があります。NHibernateでカラムを検索するフィルタ

私は2つのメソッドを持っています。最初のものは文字列(NameまたはLastName)を受け取り、Collection<Employee>を返します。その必要性があるので、このアイテムのレコードが何も返さないではない「ウッズ・テイラー」で姓「森」と列で:メソッドは、例えば、文字列を受信した場合

  public ICollection<Employee> GetEmployee_ByName(string Name) 
     { 
      ICollection<Employee> employee; 
      using (ISession session = NHibernateSessionBuilder.OpenSession()) 
      { 
       employee = session.CreateCriteria(typeof(Employee)).Add(Restrictions.Eq("Name", Name)).List<Employee>(); 
       if (employee.Count == 0) 
       { 
       employee = session.CreateCriteria(typeof(Employee)).Add(Restrictions.Eq("LastName", Name)).List<Employee>(); 
       } 
       return employee; 
      } 
      } 

問題がCreateCriteria(typeof(Employee)).Add(Restrictions.Eq("LastName", Name))であります列と同じです。

たとえば、「Maikol Smith」とその列のレコードは何も返されない「Maikol Smith Jonhson」です。

この場合、どうすればよいですか。良いフィルターを作る。 、あなたは次のようなSQLを生成するよう代わりに式を使用することにより

select ... from ... where LastName = 'Woods' 

は 代わりに、式の

答えて

1

利用と同様に...

employee = session 
    .CreateCriteria(typeof(Employee)) 
    .Add(Restrictions.Like("LastName", "%" + name + "%")) 

あなたの現在のコードは次のようなSQLを生成し

select ... from ... where LastName like '%Woods%' 
+0

非常に感謝! – ale