Das Folgende ist der Code in UI, BLL und DAL. BLL muss die Ausnahme behandeln, wenn in der Executon-Abfrage von DAL ein Problem auftritt, und den Benutzer mit einer allgemeinen Nachricht anzeigen. Wir verwenden Elmah für die Fehlerbehandlung. Könnte jemand bitte vorschlagen, wie man die Ausnahme behandelt und eine allgemeine Nachrichtenseite (wie Fehler 500) dem Benutzer zeigt.Ausnahmebehandlung durch Elmah
-Controller
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;
}
}
}