2012-09-28 3 views
0

나는 기본 키유창함 자 NHibernate는 :

으로 항목 ID를 가진 항목 테이블이 나 내부가 같은 테이블에 조인 두 사람과 함께 쿼리를 만들 수 있도록해야 매핑을 만들어이 복합 기본 키을 StoreID 및 항목 ID를 가지고 StoreItems 테이블 . ItemID는 Items 테이블에 대한 외래 키 참조를 사용합니다.

I는 다음과 같습니다 쿼리를 작성해야

select * from Items i 
inner join storeitems s1 on s1.ItemID = i.ItemID and s1.StoreID = myfirststoreid 
inner join storeitems s2 on s2.ItemID = i.ItemID and s2.StoreID = mysecondstoreid 

내가 유창 매핑을 할 수있는 방법이를 달성하기 위해 (목표는 두 개의 상점에 존재하는 항목을 선택하는 것입니다)?

답변

0

테스트되지 않음. ID를 먼저 선택한 다음 항목을 가져옵니다. 하나의 진술로 결합하는 것이 가능할 수도 있습니다 :

var itemsIdsInBothStores = 
    from i in session.Query<Item>() 
    from s in i.Stores 
    where s.Id == myfirststoreid || s.Id == mysecondstoreid 
    group i by i.Id into g 
    where g.Count() = 2 
    select g.Key; 

var itemsInBothStores = ´session.QueryOver<Item>().WhereRestrictionOn(i => i.Id).In(itemsIdsInBothStores.ToList()); 
관련 문제