잊지 않겠습니다.

QueryOver<> method에서 LINQ 쿼리인 .Contains가 먹히지 않는다.;
이때 다음과 같은 코드를 사용하면 LIKE 검색을 가능하게 할 수 있다.

var restriction = Restrictions.On(m => m.Name).IsLike("%바람과%");
var movies = session.QueryOver().Where(restriction).List();
foreach(var movie in movies)
{
    Console.WriteLine(movie.Name);
}

Posted by Y2K
,
NHibernate의 Collection Type은 총 4가지를 가지고 있다.
다른 성격을 가지고 있기 때문에 어떤 Collection Type을 사용해야지 될지 고민해야지 된다.

   Bag Set
List
Map
 중복값 허용
 Yes No
Yes
Key must be unique.
Value may be duplicated.
 Ordering  No No
Yes
No
 Type  IList Iesi.Collections.ISet
IList
IDictionary
 Bi-Direction  Yes Yes
No
No

일반적인 Table 구조에서는 Set을 사용하는 것이 EF나 MSLINQ와 동일하게 사용을 할 수 있다.

각각의 hbm.xml은 다음과 같다.

1. Bag


  
    
    
    
      
        
      
      
      
    
  
  
    
      
    
    
    
    
  


2. Set


  
    
    
    
           
         
    
  
  
    
      
    
    
    
    
  


3. List

  
    
    
    
      
        
      
    
  
  
    
      
    
    
    
    
  


4. Map
  
    
    
    
      
       
            
    
  
  
    
      
    
    
    
  


Posted by Y2K
,
NHibernate에서 상속된 model을 지원하는 방법은 총 3가지가 있다.

1. "subclass" 로 하나의 Table에 discriminator column을 지정해서 생성하는 방법
  - discriminator 값으로는 class의 full name이 들어가게 된다.
2. "joined-subclass"로 model의 parent class를 하나의 Table로, 그리고 나머지 model의 property를 묶은 table을 FK로 엮는 방법
3. "union-subclass"로 정규화를 고려하지 않고, 상속된 모든 property를 각각의 table로 구현하는 방법


subclass




  
    
      
    
        
        
    
    
  
  
    
    
    
  
    
  



joined-subclass




  
    
      
    
        
    
    
  
  
    
    
    
  
  
    
        
  


union-subclass




  
    
      
    
        
    
    
  
      
    
    
  
  
        
  


Posted by Y2K
,