protected internal override void BindParameters(ISessionImplementor session, DbCommand ps, object entity)
            {
                var entityPersister        = (IEntityPersister)persister;
                var uniqueKeyPropertyNames = uniqueKeySuppliedPropertyNames ??
                                             PostInsertIdentityPersisterExtension.DetermineNameOfPropertiesToUse(entityPersister);

                for (var i = 0; i < uniqueKeyPropertyNames.Length; i++)
                {
                    var uniqueKeyValue = entityPersister.GetPropertyValue(entity, uniqueKeyPropertyNames[i]);
                    uniqueKeyTypes[i].NullSafeSet(ps, uniqueKeyValue, i, session);
                }
            }
            protected internal override async Task BindParametersAsync(ISessionImplementor session, DbCommand ps, object entity, CancellationToken cancellationToken)
            {
                cancellationToken.ThrowIfCancellationRequested();
                var entityPersister        = (IEntityPersister)persister;
                var uniqueKeyPropertyNames = uniqueKeySuppliedPropertyNames ??
                                             PostInsertIdentityPersisterExtension.DetermineNameOfPropertiesToUse(entityPersister);

                for (var i = 0; i < uniqueKeyPropertyNames.Length; i++)
                {
                    var uniqueKeyValue = entityPersister.GetPropertyValue(entity, uniqueKeyPropertyNames[i]);
                    await(uniqueKeyTypes[i].NullSafeSetAsync(ps, uniqueKeyValue, i, session, cancellationToken)).ConfigureAwait(false);
                }
            }