protected internal static void Replicate(object instance, ReplicationMode replicationMode)
{
if (instance == null)
{
throw new ArgumentNullException("instance");
}
EnsureInitialized(instance.GetType());
ISession session = holder.CreateSession(instance.GetType());
try
{
session.Replicate(instance, replicationMode);
}
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 Replicate for " + instance.GetType().Name, ex);
}
}
finally
{
holder.ReleaseSession(session);
}
}