Как я могу запросить список пар ключ-значение с помощью NHibernate ICriteria?

У меня есть класс с несколькими полями, одно из которых IList<KeyValuePair<string, string>>.

public class Foo
{
  public IList<KeyValuePair<string, string>> Bars { get; set; }
}

Я использую Fluent NHibernate, и это конкретное поле отображается следующим образом:

HasMany(x => x.Bars).Component(Bar.Map);

и

public class BarMap : ComponentMap<KeyValuePair<string, string>>
    {
        public BarMap()
        {
            Map(x => x.Key);
            Map(x => x.Value);
        }

        public static void Map(CompositeElementPart<KeyValuePair<string, string>> part)
        {
            part.Map(x => x.Key);
            part.Map(x => x.Value);
        }
    }

Используя API ICriteria, я хотел бы иметь возможность выбрать все Foo, где Bars содержит пару значений ключа { X, Y }, и чтобы сопоставление значений X и Y было нечувствительным к регистру. Как я могу это сделать?


person Owen Pauling    schedule 24.10.2015    source источник


Ответы (1)


Способ запроса IDictionary подробно описан здесь.

и задокументировано здесь

17.1.4.1. Ссылки на псевдонимы и свойства

Description                     Syntax                Example
A collection key                {[aliasname].key}     ORGID as {coll.key}
The id of an collection         {[aliasname].id}      EMPID as {coll.id}
The element of an collection    {[aliasname].element} XID as {coll.element}

Итак, мы можем сделать что-то вроде этого

.Add(Restrictions.Eq("Bars.elements", searchedValue));
person Radim Köhler    schedule 24.10.2015