private static void InternalCreate(object instance, bool flush)
{
if (instance == null) throw new ArgumentNullException("instance");
EnsureInitialized(instance.GetType());
ISession session = holder.CreateSession(instance.GetType());
try
{
session.Save(instance);
if (flush)
{
session.Flush();
}
}
catch(Exception ex)
{
holder.FailSession(session);
// NHibernate catches our ValidationException, and as such it is the innerexception here
if (ex.InnerException is ValidationException)
{
throw ex.InnerException;
}
else
{
throw new ActiveRecordException("Could not perform Create for " + instance.GetType().Name, ex);
}
}
finally
{
holder.ReleaseSession(session);
}
}