Ниже приведен код в пользовательских интерфейсах, BLL и DAL. BLL должен обрабатывать исключение, если есть какая-либо проблема в выполнении запроса DAL и показ пользователю с общим сообщением. Мы используем Elmah для обработки ошибок. Кто-нибудь может предложить, как обрабатывать исключение и показывать пользователю общую страницу сообщений (например, ошибку 500).Обработка исключений через elmah
Контроллер
refNo = _formServiceWorker.SubmitFormData(formData, isFinalized);
Business Logic Layer:
public string SubmitFormData(GenericFormData formData, bool isFinalized)
{
var submissionHeaderDTO = new SubmissionHeaderDTO();
submissionHeaderDTO = SubmissionHeader(formData.FormId, submissionHeaderVariablesDTO);
var formFieldDataList = GetFormFieldData(formData, submissionHeaderDTO);
if (formFieldDataList.Count() > 0)
{
this._formDataService.DeleteFormData(submissionHeaderDTO.SubmissionId); // calls Data Access Layer
foreach (var formField in formFieldDataList)
{
this._formDataService.SubmitFormData(formField); //Calls Data Access Layer
}
}
}
return submissionHeaderDTO.SubmitSequence;
}
Data Access Layer
public SubmissionHeaderDTO GetRefNo(SubmissionHeaderVariablesDTO requestVariables)
{
using(var sqlConn = new SqlConnection(Configuration.DBConnection))
{
sqlConn.Open();
using (var sqlcmd = new SqlCommand("usp_testSubmissionHeaderInsert", sqlConn))
{
sqlcmd.CommandType = CommandType.StoredProcedure;
sqlcmd.Parameters.Add("@FormId", SqlDbType.UniqueIdentifier).Value = requestVariables.FormId;
SqlParameter outputSubmissionSequence = new SqlParameter("@SubmitSequence", SqlDbType.NVarChar, 30)
{
Direction = ParameterDirection.Output
};
SqlParameter outputFormGuid = new SqlParameter("@FormIdGuid", SqlDbType.UniqueIdentifier)
{
Direction = ParameterDirection.Output
};
sqlcmd.Parameters.Add(outputSubmissionSequence);
sqlcmd.Parameters.Add(outputFormGuid);
sqlcmd.ExecuteNonQuery();
var submissionHeaderDto = new SubmissionHeaderDTO()
{
SubmissionId = (Guid)outputSubmissionId.Value,
SubmitSequence = outputSubmissionSequence.Value.ToString(),
FormId = (Guid)outputFormGuid.Value
};
return submissionHeaderDto;
}
}
}