Документация содержит множество полезных примеров.
Ваш zipAlias
должен быть переменной в локальной области видимости.
Zip zipAlias = null;
string zipCode = "";
var query = DetachedCriteria.For<County>()
.CreateCriteria<County>(x => x.Zips, () => zipAlias, JoinType.LeftOuterJoin)
.Add<Zip>(zip => zip.ZipCode == zipCode);
Как ссылка на документациюзагрузка вместо рендеринга, я скопировал несколько разделов.
Создание ассоциации критериев с псевдонимом
Использование оригинального API ICriteria:
ICriteria before = CreateSession()
.CreateCriteria(typeof(Person))
.CreateCriteria("Children", "childAlias")
.Add(Restrictions.Eq("Nickname", "test"));
Использование расширений лямбды NHibernate:
Child childAlias = null;
ICriteria after = CreateSession()
.CreateCriteria(typeof(Person))
.CreateCriteria((Person p) => p.Children, () => childAlias)
.Add<Child>(c => c.Nickname == "test");
Создание критерия Ассоциации псевдонимов с псевдонимом и типом соединения
Использование исходного API-интерфейса ICriteria:
ICriteria before = CreateSession()
.CreateCriteria(typeof(Person), "personAlias")
.CreateCriteria("personAlias.Children", "childAlias", JoinType.LeftOuterJoin)
.Add(Restrictions.Eq("Nickname", "test"));
Использование лямбда-расширений NHibernate:
Person personAlias = null;
Child childAlias = null;
ICriteria after = CreateSession()
.CreateCriteria(typeof(Person), () => personAlias)
.CreateCriteria(() => personAlias.Children, () => childAlias, JoinType.LeftOuterJoin)
.Add<Child>(c => c.Nickname == "test");
Создание ассоциации критериев с псевдонимом и типом соединения
Использование исходного API-интерфейса ICriteria:
DetachedCriteria before =
DetachedCriteria.For<Person>()
.CreateCriteria("Children", "childAlias", JoinType.LeftOuterJoin)
.Add(Restrictions.Eq("Nickname", "test"));
Использование расширений лямбды NHibernate:
Child childAlias = null;
DetachedCriteria after =
DetachedCriteria.For<Person>()
.CreateCriteria((Person p) => p.Children, () => childAlias, JoinType.LeftOuterJoin)
.Add<Child>(c => c.Nickname == "test");