У меня есть метод executeononquery в Data Access Layer. Мне нужно обработать исключение в бизнес-логике, когда executeononquery терпит неудачу. Я использую регистратор Elmah в BLL. Там нет возвращаемого значения из метода ExecuteNonQuery, так, что состояние я должен проверить в УСК, чтобы войти в любое исключениеОбработка исключения sql в бизнес-логике
BLL:
// конструктор
public FormService(ISettings settings, ILogger logger, IFormDataServiceWorker formDataService)
: base(settings, logger)
{
this._formDataService = formDataService;
}
//method calling DAL
public string GetRefNo(FormData formData)
{
foreach (var formFieldData in formFieldDataList)
{
this._formDataService.SubmitFormData(formFieldData);
}
}
DAL Реализация:
public void SubmitFormData(FormFieldDTO formFieldData)
{
using (var sqlConn = new SqlConnection(Configuration.DBConnection))
{
sqlConn.Open();
using (var sqlcmd = new SqlCommand("usp_SubmissionDataInsert", sqlConn))
{
sqlcmd.CommandType = CommandType.StoredProcedure;
sqlcmd.Parameters.Add("@SubmissionId", SqlDbType.UniqueIdentifier).Value = formFieldData.SubmissionId;
sqlcmd.Parameters.Add("@FieldId", SqlDbType.SmallInt).Value = formFieldData.FieldId;
sqlcmd.Parameters.Add("@FieldTitle", SqlDbType.VarChar, 500).Value = formFieldData.FieldTitle;
sqlcmd.Parameters.Add("@FieldData", SqlDbType.VarChar, -1).Value = formFieldData.FieldValue;
sqlcmd.Parameters.Add("@FieldName", SqlDbType.VarChar, 200).Value = formFieldData.FieldName;
sqlcmd.ExecuteNonQuery();
}
}
}