public override void NullSafeSet(IDbCommand cmd, object value, int index, ISessionImplementor session)
{
if (value == null)
{
((IDataParameter)cmd.Parameters[index]).Value = DBNull.Value;
}
else
{
IExternalBlobConnection conn = GetExternalBlobConnection(session);
IExternalBlobConnection blobconn;
byte[] identifier;
if (!ExtractLobData(value, out blobconn, out identifier) || !conn.Equals(blobconn)) // Skip writing if an equal connection is used
using (ExternalBlobWriter writer = conn.OpenWriter())
{
WriteLobTo(value, writer);
identifier = writer.Commit();
}
((IDataParameter)cmd.Parameters[index]).Value = identifier;
}
}