2012-05-10 3 views
1

Я пытаюсь закодировать инструкцию «не в» в FN, но не знаю, как лучше всего это сделать. Вот несколько sql-операторов:Fluent Nhibernate Not In Case Statement

select * from T1 
where T1. id not in 
(
    select distinct T2.fkeyID from T2 
) 

Должен ли я создавать сопоставления со ссылками один-ко-многим и использовать проверку собственности? Или есть другой способ, например. как-то написать QueryOver для решения проблемы? Спасибо.

ответ

2
var subquery = QueryOver.Of<T2>() 
    .Select(Projections.Distinct(Projections.Property("referencedT1.id"))) 

var results = session.QueryOver<T1>() 
    .WithSubquery.WhereProperty(t1 => t1.Id).NotIn(subquery) 
    .List(); 
+0

Спасибо, уже выяснили, как его решить. –