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)");
}
}