Когда будет поддерживаться Distinct (IEqualitComparer) в NHibernate.Linq? - PullRequest
1 голос
/ 10 августа 2010

Это быстрый!

Я попробовал последнюю версию альфа версии 3.0.0, и эта перегрузка отличных по-прежнему не поддерживается, однако перегрузка без параметров (которая использует компаратор равенства по умолчанию) поддерживается. Кто-нибудь знает, когда это будет поддерживаться в Nhibernate.Linq? Также есть ли другие поставщики Linq для NHibernate, кроме NHibernate.Linq?


Любая помощь приветствуется!

1 Ответ

2 голосов
/ 10 августа 2010

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? Он не может или, по крайней мере, не без посторонней помощи, поэтому вам нужно расширить поставщика NHibernate LINQ , чтобы сообщить NHibernate, как его перевести.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...