2
이 쿼리가 있는데 어떻게 ORA로 WhereRestrictionOn을 설정했는지 찾을 수 없습니다. 이제 그들은 AND로 작동하지만 하나 또는 다른 것을 원합니다.WhereRestriction을 OR로하는 NHibernate QueryOver
var privateInfo = Session.QueryOver<ConContact>()
.JoinAlias(c => c.PrivateInfos,() => pi)
.WhereRestrictionOn(c => c.FirstName).IsLike(_selectedFirstLetter + "%")
.WhereRestrictionOn(c => c.LastName).IsLike(_selectedFirstLetter + "%") // todo: change to firstname OR lastname
.Where(c => c.Status == ContactStatus.Approved)
.Select(
Projections.Property("pi.Id").WithAlias(() => sri.Id),
Projections.Property("FirstName").WithAlias(() => sri.Name), //todo: get fullname here => Add concontact object in privateinfo
Projections.Property("pi.Address").WithAlias(() => sri.Address),
Projections.Constant("Contact").WithAlias(() => sri.Type)
)
.TransformUsing(Transformers.AliasToBean<SearchResultInfo>())
.List<SearchResultInfo>()
.ToList();
어떤 도움을 많이 주셔서 감사합니다!
해결책 :
var privateInfo = Session.QueryOver<ConContact>()
.JoinAlias(c => c.PrivateInfos,() => pi)
.Where(
Restrictions.Disjunction()
.Add(Restrictions.Like("FirstName", _selectedFirstLetter + "%"))
.Add(Restrictions.Like("LastName", _selectedFirstLetter + "%"))
)
.Where(c => c.Status == ContactStatus.Approved)
.Select(
Projections.Property("pi.Id").WithAlias(() => sri.Id),
Projections.Property("FirstName").WithAlias(() => sri.Name), //todo: get fullname here => Add concontact object in privateinfo
Projections.Property("pi.Address").WithAlias(() => sri.Address),
Projections.Constant(NewObjectType.Contact).WithAlias(() => sri.Type)
)
.TransformUsing(Transformers.AliasToBean<SearchResultInfo>())
.List<SearchResultInfo>()
.ToList();
고마워요! 이것은 저를 위해 일해, 해결책은 화제에서 배치했다. –
정말 대단합니다! Enjoy NHiberante;) ... 아마, 내가 생각했던'MatchMode'의 사용을 다시 생각해보십시오. –