Changing something that affects Equals()/GetHashCode() of an object while that object is the key of a dictionary isn't allowed by the IDictionary contract. What behavior should we expect?
/Oskar 2013/11/20 Roger Kratz <[email protected]> > Hi > > > > I reported regression bug 3555 some time ago. This issue currently > prevents releasing an Envers version targeting NH 4. > > > > I’m sitting trying to fixing the issue myself, but run into an issue > whether old behavior is correct or not. > > > > What the issue is all about is… > > > > var key = new KeyEntity(); > > var value = new ValueEntity(); > > var entity = new MapEntity(); > > entity.SomeMapProp[key] = value; (1) > > > > [open session] > > [begin tran] > > [save entity] > > [commit tran] > > [begin tran] > > Key.SomeProperty = newvalue; (2) > > [commit tran] > > [/close session] > > > > ….in other words; changing the key object of an entry in a map/dictionary. > > > > In current NH 4 code base, code above throws. I’ve fixed the problem > locally but noticed that my “fix” got another result than NH 3. In NH 3 > code above resulted in _*two*_ entries in the map – both (1) and (2), > while my local fix resulted in one entry (only 2). I personally think the > behavior in NH 3 was wrong. > > > > I’ll be glad to fix this issue so a new Envers version could be released > together with NH 4 alpha 2 but I need to double check with you first what > the “correct” behavior is in this case. Any opinions? > > > > All the best, > > Roger > > > > > > > > -- > > --- > You received this message because you are subscribed to the Google Groups > "nhibernate-development" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > For more options, visit https://groups.google.com/groups/opt_out. > -- --- You received this message because you are subscribed to the Google Groups "nhibernate-development" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/groups/opt_out.
