NHibertate按映射字典查询

时间:2011-11-01 06:23:26

标签: nhibernate dictionary hql queryover

你能用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 个答案:

答案 0 :(得分:2)

你应该可以使用Linq来NHibernate。您也可以使用HQL。

也许是这样的:

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

我知道我错过了Value限制,但这很容易添加。

我很难在QueryOver中找到这个功能。