Класс Person имеет ассоциацию по классу Identity (один к одному), FirstName и LastName являются свойствами класса Person, а Sex и BirthDate являются свойствами класса Identity.
У меня есть запрос sql в качестве следующих примеров:
select FirstName,LastName,Identity.Sex,Identity.BirthDate from Person_Person as Person
inner join Person_Identity as Identity on Person.Id = Identity.Person_id_fk
WHERE FirstName like '%jack%' and LastName like '%smit%'
Я конвертирую его в QueyOver.
var q = SessionInstance.QueryOver<Person>();
if (!String.IsNullOrEmpty(searchPersonDto.FirstName)) //necessary
q = q.Where(p => p.FirstName.IsLike(searchPersonDto.FirstName, MatchMode.Anywhere));
if (!String.IsNullOrEmpty(searchPersonDto.LastName)) //necessary
q = q.Where(p => p.LastName.IsLike(searchPersonDto.LastName, MatchMode.Anywhere));
Person aliasPerson = null;
q = q.SelectList(list => list
.Select(p => p.Id).WithAlias(() => aliasPerson.Id)
.Select(p => p.FirstName).WithAlias(() => aliasPerson.FirstName)
.Select(p => p.LastName).WithAlias(() => aliasPerson.LastName)
.Select(p => p.Identity.Sex).WithAlias(() => aliasPerson.Identity.Sex)
.Select(p => p.Identity.BirthDate).WithAlias(() => aliasPerson.Identity.BirthDate))
.TransformUsing(Transformers.AliasToBean<Person>());
q.List<Person>();
Но объединение в этом запросе неверно. Это сообщение вызывает исключение: could not resolve property: Identity.Sex of: Domain.Entities.Person
Как мне присоединиться к Identity by Person?
Обновлено: добавлен аналогичный запрос linq.
var q = SessionInstance.Query<Person>()
.Where(p => p.FirstName == searchPersonDto.FirstName)
.Select(p => new Person(p.Id)
{
FirstName = p.FirstName,
LastName = p.LastName,
Identity = new Identity()
{
Sex = p.PersonIdentity.Sex,
BirthDate = p.Identity.BirthDate
}
}).ToList<Person>();
Мне нужен запрос с помощью QueryOver, аналогичный приведенному выше запросу с помощью Linq.
q.List<Person>()
вместоq.List<object>()
- person Ehsan   schedule 18.12.2011SELECT * From Person_Person
Но я этого не хочу. Я хочу этот запрос:SELECT FirstName,LastName, ... From Person_Person
- person Ehsan   schedule 18.12.2011