Когда был бы Отличный (IEqualitComparer) поддерживаться в NHibernate. Linq?

Это - быстрое!

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


Любая справка ценится!

1
задан Galilyou 9 August 2010 в 22:29
поделиться

1 ответ

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, как его переводить.

2
ответ дан 2 September 2019 в 22:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: