In this series you saw mostly the configuration of NHibernate.Validator through Loquacious (our configuration based on fluent-interface).
What is the ValidationDef<T> ?
If you are using the Satisfier (validation through lambdas) the ValidationDef become the class whose responsibility is validate a instance of T.
If you need some validation, involving the persistence, and you want do it through NHV, which is the best candidate class where implement the validation ?
Let me show you how much easy is it:
public class BlogPostSofValidation : ValidationDef<BlogPost>
private readonly ISessionFactory factory;
public BlogPostSofValidation(ISessionFactory sessionFactory)
factory = sessionFactory;
ValidateInstance.By((bp, c) => !Exists(bp));
private bool Exists(BlogPost post)
if (ReferenceEquals(post, null))
using (var session = factory.OpenStatelessSession())
var criteria = session.CreateCriteria(typeof(BlogPost));
return criteria.UniqueResult() != null;
Here I’m showing only the part involving the persistence but you know… there you can define the validation of any other property as usual.
To register this definition the work to do is very easy:
var veConfig = new FluentConfiguration();
validatorEngine = new ValidatorEngine();
and that it’s all (the usage is identical of the previous post).