这是一个快速的!
我已经尝试了最新的v3.0.0 alpha并且仍然不支持distinct的重载,但是支持无参数重载(使用默认的相等比较器)。有谁知道Nhibernate.Linq什么时候会支持?除了NHibernate.Linq之外,NHibernate还有其他Linq提供程序吗?
任何帮助表示赞赏!
答案 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如何翻译它。