2011-11-01 88 views
1

你可以幫助我與nhibernate查詢。 沒有與映射下一個對象:NHibertate查詢映射字典

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()); 
} 

請幫我做的查詢,如:查找其中Name =「新」和上下文包含鍵「任務id」的所有ObjectStates和價值「3」。不幸的是,我沒有找到任何示例如何查找映射的IDictionary。

+0

也許你應該考慮使用包裝對象的列表,而不是字典? – jishi

回答

2

你應該可以使用Linq到NHibernate。你也可以使用HQL。

也許是這樣的:

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

我知道我錯過了值的限制,但這是很容易的添加

我很努力,雖然找到QueryOver此功能。