Вот что мы знаем: NHibernate рекомендует переопределить Equals () и GetHashCode (). Microsoft рекомендует НЕ переопределять оператор == в неизменяемых типах. Следовательно, кажется, что клиентский код не должен использовать operator == для сравнения объектов. Например, если Foo корректно перегружает GetHashCode () и Equals, тогда:
var foo1 = session.Get<Foo>(23);
...
var foo2 = session.Get<Foo>(23);
Assert.IsTrue( foo1 == foo2 ); // May fail!
Assert.IsTrue( foo1.Equals(foo2)); // Guaranteed!
Это правильное суммирование?