Solution Options

by Ivan Gerasimenko

JavaScript

Solution:
 - DAL
 - DAL.Interop
 - DAL.Tests
 - DTO
 - Server.Model
 - Server.Services
 - Server.Services.Interop
 - Server.Services.Tests
 - Tests
 - WebSite
 
 
 DAL method:
public void DeleteDocumentById(int documentId)
{
    try
    {
        LogEventManager.Logger.Info("Start execute GetAddressees()");

        using (var cmd = new SqlCommand())
        {
            // connection
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Connection = Connection;
            cmd.CommandText = "[dbo].[DeleteDoc]";

            // parameters
            var param = cmd.Parameters;
            param.Add("@Id", SqlDbType.Int).Value = documentId;

            // open connection
            if (Connection.State != ConnectionState.Open)
                Connection.Open();

            // Transaction scope
            using (var scope = new TransactionScope(TransactionScopeOption.Required))
            {
                cmd.ExecuteNonQuery();
                scope.Complete(); // you should call the Complete method only once to inform that transaction manager
            }
        }
    }
    catch (SqlException sqlEx)
    {
        LogEventManager.Logger.Error(sqlEx);
        throw;
    }
    catch (Exception ex)
    {
        LogEventManager.Logger.Error(ex);
        throw;
    }
    finally
    {
        Connection.Close();
        LogEventManager.Logger.Info("End execute DeleteDocumentById(int documentId)");
    }
}