【发布时间】:2012-06-16 23:09:30
【问题描述】:
我有以下场景,一个客户可以在多个银行拥有银行账户。此关系在 Customer 类中描述为 IDictionary(使用 map 标记映射):
public class Customer
{
public virtual IDictionary<Bank, string> Banks
{
get { return _Banks; }
set { _Banks = value; }
}
private IDictionary<Bank, string> _Banks = new Dictionary<Bank, string>();
}
IDictionary 中的每个键代表一个 Bank,其中 Customer 有一个帐户,字符串值是与此问题无关的简单状态。
我想做的是一个 NHibernate 查询来检索在指定 银行 中拥有帐户的所有 客户。我在 Bank 类中尝试了这个(因此 this 关键字指的是银行):
IList<Customer> customers = session.QueryOver<Customer>()
.Where(x => x.Banks.Keys.Contains(this))
.List();
甚至认为上面的查询在我尝试运行时编译没有错误,我得到以下异常:
System.Exception:无法识别的方法调用:System.Collections.Generic.ICollection`1[[Finance.Bank, Finance, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]:Boolean Contains(Finance.Bank )
那么我怎样才能正确地执行这种查询呢?谢谢!
PS:This SO question 展示了如何为 ISet 集合执行此操作,this SO question 表示我尝试使用 ICriteria API 可能无法实现。
【问题讨论】:
标签: c# nhibernate queryover