public DetachedCriteria BuildCriteria(int episodeId, int groupId)
{
var groupCriteria = DetachedCriteria.For<Groups>()
.Add(Restrictions.Eq("this.Id", groupId))
.Add(Restrictions.Eq("Group.Id", groupId))
.AddOrder(Order.Asc("Group.PubDate"));
return DetachedCriteria.For<EpisodeGroups>()
.Add(Restrictions.Eq("this.Id", episodeId))
.Add(Subqueries.PropertyIn("this.Groups", groupCriteria)
.SetMaxResult(1);
}
Тогда вы можете сделать что-то вроде этого ...
var episodes = _repository.ExectueCriteria<EpisodeGroups>(BuildCriteria(episodeId, groupId))
В качестве особого соображения, причина, по которой вы захотите загружать объект Group, заключается в том, если вы хотитеиспользуйте LINQ для последующего сравнения PUBDATE в вашей бизнес-логике, в отличие от использования строгих отдельных критериев.
Мы обнаружили, что при быстрой загрузке атрибутов сущности уменьшается общее количество обращений в нашу базу данных.
Нет гарантий, что этот код работает ... но, по крайней мере, он должен начать, удачи:)