Nhibernate запрос для элементов, которые имеют свойство Dictionary, содержащее значение
Мне нужен способ сделать запрос в Nhibernate для элементов, которые имеют свойство Dictionary, содержащее значение.
Предполагать:
public class Item
{
public virtual IDictionary<int, string> DictionaryProperty {get; set;}
}
и отображение:
public ItemMap()
{
HasMany(x => x.DictionaryProperty)
.Access.ReadOnlyPropertyThroughCamelCaseField(Prefix.Underscore)
.AsMap<string>(
index => index.Column("IDNumber").Type<int>(),
element => element.Column("TextField").Type<string>().Length(666)
)
.Cascade.AllDeleteOrphan()
.Fetch.Join();
}
Я хочу запросить всеItem
s, которые имеют значение словаря "SomeText". Следующий пример в Linq завершается ошибкой:
session.Query<Item>().Where(r => r.DictionaryProperty.Any(g => g.Value == "SomeText"))
с ошибкой
cannot dereference scalar collection element: Value
Так есть ли способ добиться этого в NHibernate? Linq не является исключительным требованием, но его предпочитают. Не то чтобы я не интересовался запросом по словарюключи это может быть достигнуто с помощью.ContainsKey
, Φορэто похоже, но не то же самое