NHibertate запрос по сопоставленному словарю - PullRequest
1 голос
/ 01 ноября 2011

Не могли бы вы помочь мне с запросом nhibernate.Существует следующий объект с отображением:

public ObjectkState
{
public long Id {get;set;}
public IDictionary<string,string> Context {get;set;}
public string Name {get; set;}
}

Отображение объекта

public ObjectStateMap(): ClassMappublic ObjectStateMap()
{
 Id(x => x.Id).GeneratedBy.Identity();
 Map(x => x.Name);
 HasMany(x => x.Context).Table("ContextItems").KeyColumn("TaskId")
 .Cascade.All()
 .AsMap("ItemKey").Element("ItemValue", c => c.Type());
}

Пожалуйста, помогите мне сделать запрос как: Найти все ObjectStates, где Name = "New", а Context содержит ключ "TaskId"и значение" 3 ".К сожалению, я не нашел примеров того, как найти сопоставленный IDictionary.

1 Ответ

2 голосов
/ 30 ноября 2011

Вы должны быть в состоянии использовать Linq для NHibernate. Вы также можете использовать HQL.

Возможно, что-то вроде этого:

   session.Query<ObjectStateMap>()
            .Where(x => x.Name == "New")
            .Where(x => x.Context.ContainsKey("SubscriptionTypeID"))
            .ToList();

Я знаю, что мне не хватает ограничения Value, но это достаточно просто добавить.

Я изо всех сил пытаюсь найти эту функцию в QueryOver, хотя.

...