But why don't you use the built in IValidatable and/or ILifecycle interfaces, or the event system, have you tried?
RP On Wednesday, December 17, 2014 12:46:24 PM UTC, [email protected] wrote: > > We use a modified version of NHibernate, and I'm trying to get back to > using an official release (either by finding the "proper" way to do things, > or by getting our changes into the main codebase). > > We have found it helpful to have read-only access to the ActionQueue's > list of insertions, updates and deletes. > > We use a flush event listener to intercept the flush, and then iterate > over the objects about to be inserted/updated/deleted. > > Any insertions/updates that implement an interface we have defined, > IValidator, get validated. Likewise any deletions that implement > IDeleteValidator have their deletion validated. > > In the event that this validation fails, we throw an exception and nothing > is saved to the database - this makes it easy for us to ensure that > everything in the database is in a consistent state. (We are careful to > ensure that the validation doesn't change any objects as they might be > missed in the flush). > > The code we've added to ActionQueue is > > public IEnumerable<object> Insertions > { > get { return insertions.OfType<EntityInsertAction>().Select(x > => x.Instance); } > } > > public IEnumerable<object> Updates > { > get { return updates.Select(x => x.Instance); } > } > > public IEnumerable<object> Deletions > { > get { return deletions.Select(x => x.Instance); } > } > > Is this likely to be accepted? If so I'll make a pull request > -- You received this message because you are subscribed to the Google Groups "nhusers" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/nhusers. For more options, visit https://groups.google.com/d/optout.
