سؤال

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٪"

ولكن أود الحصول على "اسم مثل٪ foo٪ أو slovenianname مثل٪ foo٪ أو اسم مثل٪ foo٪ أو slovenianname مثل٪ foo٪"

يمكنني استخدام Expression.disjunction () () من أجل أو ولكن لدي مشكلة لا أستطيع استخدام مجرى الإنقاذ داخل Expression.disjunction (). هل يمكن لأي شخص أن يقول لي كيف يمكنني استخدام أو وأقرر معا؟

يعتبر

هل كانت مفيدة؟

المحلول

استخدم Regealias خارج الانفصال ().

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؛ تعيين؛ }
Publies اسم سلسلة الظاهري {get؛ تعيين؛} مدينة المدينة الافتراضية العامة {get؛ تعيين؛} // الكثير إلى واحد}

مدينة الصف {
Virtual Intial ID {get؛ تعيين؛ }
اسم سلسلة الظاهرية العامة {get؛ تعيين؛ }
البلد الافتراضي العام {get؛ تعيين؛ } // الكثير إلى واحد}

بلد الطبقة {
Virtual Intial ID {get؛ تعيين؛ }
اسم سلسلة الظاهرية العامة {get؛ تعيين؛ }
}

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top