expression.disjunction () fluent nhibernate 내부의 CreateCriteria
-
19-09-2019 - |
문제
criteriaCount.CreateCriteria(AdvertisementsProperties.City.ToString())
.Add(Expression.Like(CitiesProperties.Name.ToString(), query, MatchMode.Anywhere))
.Add(Expression.Like(CitiesProperties.SlovenianName.ToString(), query, MatchMode.Anywhere))
.CreateCriteria(AdvertisementsProperties.Country.ToString())
.Add(Expression.Like(CountriesProperties.Name.ToString(), query, MatchMode.Anywhere))
.Add(Expression.Like(CountriesProperties.SlovenianName.ToString(), query, MatchMode.Anywhere));
이 반환 " %foo %및 slovenianname과 같은 이름은 %foo %및 %foo %및 slovenianname과 같은 이름과 같은 이름과 같은 이름과 같은 이름입니다."
그러나 나는 " %foo %또는 slovenianname과 같은 이름과 같은 이름과 같은 foo %또는 %foo %또는 slovenianname과 같은 이름과 같은 이름과 같은 이름을 얻고 싶습니다."
expression.disjunction ()을 사용할 수 있지만 expression.disjunction () 내부에서 CreateCriteria를 사용할 수없는 문제가 있습니다. 누군가 내가 어떻게 사용하거나, 그리고 createcriteria를 함께 사용할 수 있습니까?
문안 인사
해결책
disjunction () 외부에서 CreateAlias를 사용하십시오 ().
var result = session.CreateCriteria<Property>()
.CreateAlias("Cities", "city")
.CreateAlias("Countries", "country")
.Add(Restrictions.Disjunction()
.Add(Expression.Like("city.Name", query, MatchMode.Anywhere))
.Add(Expression.Like("city.SlovenianNam", query, MatchMode.Anywhere))
.Add(Expression.Like("country.Name", query, MatchMode.Anywhere))
.Add(Expression.Like("country.SlovenianNam", query, MatchMode.Anywhere))
).List();
해당 엔터테스는 다음과 같습니다. 바라건대 그들은 당신의 것과 비슷합니다.
class Property
{
public virtual Guid Id { get; set; }
public virtual IList<City> Cities { set; get; }
public virtual IList<Country> Countries { set; get; }
}
class City
{
public virtual Guid Id { get; set; }
public virtual string Name { get; set; }
public virtual string SlovenianNam{ get; set; }
}
class Country
{
public virtual Guid Id { get; set; }
public virtual string Name { get; set; }
public virtual string SlovenianNam{ get; set; }
}
다른 팁
Othere 클래스는 모두 재산 계급의 헌법이기 때문에 위의 예는 잘 작동합니다.
그것이 순서대로 있다면 작동하지 않습니다.
클래스 속성 {public virtual int id {get; 세트; }
게시 가상 문자열 이름 {get; 세트;} 공공 가상 시티 시티 {get; set;} // 많은 ~ 하나}
클래스 시티 {
공개 가상 int id {get; 세트; }
공용 가상 문자열 이름 {get; 세트; }
공공 가상 국가 국가 {get; 세트; } // 많은 ~ 하나}
계급 국가 {
공개 가상 int id {get; 세트; }
공용 가상 문자열 이름 {get; 세트; }
}