private static void Save(
string contextKey,
string assemblyFileName,
byte[] binaries,
byte[] hashes,
string deployerVersion,
DbConnection connection,
string schemaName)
{
const string sql =
"INSERT INTO [{0}].[__DeploymentHistory] " +
"([DeploymentId] " +
",[ContextKey] " +
",[AssemblyFileName] " +
",[Binaries] " +
",[Hashes] " +
",[DeployerVersion]) " +
"VALUES " +
"(@DeploymentId " +
",@ContextKey " +
",@AssemblyFileName " +
",@Binaries " +
",@Hashes " +
",@DeployerVersion) ";
var deploymentId = $"{DateTime.UtcNow:yyyyMMddHHmmss}_{Guid.NewGuid():N}";
using (var command = connection.CreateCommand())
{
command.CommandText = string.Format(sql, schemaName);
var deploymentIdParam = command.CreateParameter();
deploymentIdParam.DbType = DbType.String;
deploymentIdParam.Direction = ParameterDirection.Input;
deploymentIdParam.ParameterName = "@DeploymentId";
deploymentIdParam.Value = deploymentId;
command.Parameters.Add(deploymentIdParam);
var contextKeyParam = command.CreateParameter();
contextKeyParam.DbType = DbType.String;
contextKeyParam.Direction = ParameterDirection.Input;
contextKeyParam.ParameterName = "@ContextKey";
contextKeyParam.Value = contextKey;
command.Parameters.Add(contextKeyParam);
var assemblyFileNameParam = command.CreateParameter();
assemblyFileNameParam.DbType = DbType.String;
assemblyFileNameParam.Direction = ParameterDirection.Input;
assemblyFileNameParam.ParameterName = "@AssemblyFileName";
assemblyFileNameParam.Value = assemblyFileName;
command.Parameters.Add(assemblyFileNameParam);
var binariesParam = command.CreateParameter();
binariesParam.DbType = DbType.Binary;
binariesParam.Direction = ParameterDirection.Input;
binariesParam.ParameterName = "@Binaries";
binariesParam.Value = binaries;
command.Parameters.Add(binariesParam);
var hashesParam = command.CreateParameter();
hashesParam.DbType = DbType.Binary;
hashesParam.Direction = ParameterDirection.Input;
hashesParam.ParameterName = "@Hashes";
hashesParam.Value = hashes;
command.Parameters.Add(hashesParam);
var deployerVersionParam = command.CreateParameter();
deployerVersionParam.DbType = DbType.String;
deployerVersionParam.Direction = ParameterDirection.Input;
deployerVersionParam.ParameterName = "@DeployerVersion";
deployerVersionParam.Value = deployerVersion;
command.Parameters.Add(deployerVersionParam);
var rows = command.ExecuteNonQuery();
if (rows != 1)
{
throw new Exception($"Failed to INSERT __DeploymentHistory, result: {rows}");
}
}
}