These classes have some similar methods but seem to work slightly different.
What's the difference between them and when should I use each of them?
Detached criteria can be built up without reference to an ISession
. You can later take that criteria and apply it to an ISession
to get an executable ICriteria
.
Use ICriteria
when you have a session.
Use DetachedCriteria
when you're not sure against what session the query will be executed.
Note that DetachedCriteria
does not implement ICriteria
-- they are not interchangeable. You must always call detachedCriteria.GetExecutableCriteria(session)
to get an ICriteria
instance.