什么时候NHibernate.Linq会支持Distinct(IEqualitComparer)?

时间:2010-08-09 22:29:34

标签: nhibernate

这是一个快速的!

我已经尝试了最新的v3.0.0 alpha并且仍然不支持distinct的重载,但是支持无参数重载(使用默认的相等比较器)。有谁知道Nhibernate.Linq什么时候会支持?除了NHibernate.Linq之外,NHibernate还有其他Linq提供程序吗?


任何帮助表示赞赏!

1 个答案:

答案 0 :(得分:2)

NHibernate不可能使用任何任意IEqualityComparer并将其转换为SQL。例如:

class PersonEqualityComparer: IEqualityComparer<Person> {
  public bool Equals(Person p1, Person p2) {
    var cfg = ConfigurationManager.AppSettings["something"];
    if (SomeStaticClass.SomeMethod(cfg)) {
      return p1.Id == p2.Id;
    }
    return p1.Name == p2.Name;
  }

  public int GetHashCode(Person p) {
    return p.Id.GetHashCode();
  }
}

是的,这可能是一个可怕的实施,但可能完全有效。 NHibernate将如何将其转换为SQL?它不能,或者至少没有一些帮助,所以你需要extend the NHibernate LINQ provider告诉NHibernate如何翻译它。