private static void InsertProgramsSqlServer(ImportParams aImportParam)
{
SqlTransaction transact = null;
try
{
using (SqlConnection connection = new SqlConnection(aImportParam.ConnectString))
{
DeleteProgramsDelegate deletePrograms = null;
switch (aImportParam.ProgamsToDelete)
{
case DeleteBeforeImportOption.OverlappingPrograms:
IEnumerable<ProgramListPartition> partitions = aImportParam.ProgramList.GetPartitions();
deletePrograms =
() => ExecuteDeleteProgramsSqlServerCommand(partitions, connection, transact, aImportParam.SleepTime);
break;
case DeleteBeforeImportOption.ProgramsOnSameChannel:
IEnumerable<int> channelIds = aImportParam.ProgramList.GetChannelIds();
deletePrograms =
() => ExecuteDeleteProgramsSqlServerCommand(channelIds, connection, transact, aImportParam.SleepTime);
break;
}
connection.Open();
transact = connection.BeginTransaction();
if (deletePrograms != null)
{
deletePrograms();
}
ExecuteInsertProgramsSqlServerCommand(aImportParam.ProgramList, connection, transact, aImportParam.SleepTime);
transact.Commit();
}
}
catch (Exception ex)
{
try
{
if (transact != null)
{
transact.Rollback();
}
}
catch (Exception ex2)
{
Log.Info("BusinessLayer: InsertSqlServer unsuccessful - ROLLBACK - {0}, {1}", ex2.Message, ex2.StackTrace);
}
Log.Info("BusinessLayer: InsertSqlServer caused an Exception - {0}, {1}", ex.Message, ex.StackTrace);
}
}