我有一个场景需要翻译,一个“客户”可以在多个“银行”拥有银行账户。这种关系在“客户”类中使用IDictionary(通过“map”标签映射)描述:
每个IDictionary中的键都代表客户在银行拥有账户的银行,字符串值是一个与此问题无关的简单状态。
我想做的是一个NHibernate查询,以检索所有在指定银行拥有账户的客户。我在Bank类内尝试了这个操作(因此this关键字是指一个银行):
尽管上述查询没有错误,但当我尝试运行它时,却遇到了以下异常:
System.Exception: 无法识别的方法调用:System.Collections.Generic.ICollection`1[[Finance.Bank, Finance, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]:Boolean Contains(Finance.Bank)
那么我该如何正确执行这种查询?谢谢!
PS:这个 SO 问题展示了如何处理 ISet 集合,而这个 SO 问题表明使用 ICriteria API 可能不可行。
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中的键都代表客户在银行拥有账户的银行,字符串值是一个与此问题无关的简单状态。
我想做的是一个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:这个 SO 问题展示了如何处理 ISet 集合,而这个 SO 问题表明使用 ICriteria API 可能不可行。