Я передал типизированный объект, содержащий несколько значений полей, в команду SQL, которая вызывает хранимую процедуру Insert. При отладке я вижу, что каждое из полей имеет значение, и ни одно из них не равно нулю.
Но когда я продолжаю отлаживать вызов db.ExecuteNonQuery
, я получаю исключение SQL, указывающее, что поле приложения пустое. Хотя он не равен нулю и имеет строковое значение до выполнения этой команды.
Я проверил обычные шаги отладки, тип поля модели соответствует типу в файле DbCommand
. Также я проверил значение escalation.Application
перед выполнением запроса, который заполняется строковым значением, как и ожидалось.
Вопрос:
Кто-нибудь знает, почему значение поля оценивается как нулевое на ExecuteNonQuery
?
Код:
ДАЛ класс -
public bool InsertWebReq(Escalation escalation) { Database db = null; string sqlCommand = ""; try { DatabaseProviderFactory factory = new DatabaseProviderFactory(); db = factory.Create("NOTIFICATION"); sqlCommand = "CREATE_ESCALATION"; using (DbCommand dbCommand = db.GetStoredProcCommand(sqlCommand)) { db.AddInParameter(dbCommand, "Application", DbType.String, escalation.Application); db.AddInParameter(dbCommand, "EM", DbType.String, escalation.EM); db.AddInParameter(dbCommand, "EscalationActions", DbType.String, escalation.EscalationActions); db.AddInParameter(dbCommand, "ProblemStatement", DbType.String, escalation.ProblemStatement); db.AddInParameter(dbCommand, "status", DbType.String, escalation.status); db.AddInParameter(dbCommand, "UpdatedBy", DbType.String, escalation.UpdatedBy); db.AddInParameter(dbCommand, "UpdatedTime", DbType.DateTime, escalation.UpdatedTime); db.AddInParameter(dbCommand, "Impact", DbType.String, escalation.Impact); db.ExecuteNonQuery(dbCommand); return true; } } catch (SqlException ex) { //Log the SQL specific errors for (int i = 0; i < ex.Errors.Count; i++) { StringBuilder errorMessages = new StringBuilder(); errorMessages.Append("Index #" + i + "\n" + "Message: " + ex.Errors[i].Message + "\n" + "LineNumber: " + ex.Errors[i].LineNumber + "\n" + "Source: " + ex.Errors[i].Source + "\n" + "Procedure: " + ex.Errors[i].Procedure + "\n"); } MyLogger.FileLogger.ErrorFormat("{0} - {1}", sqlCommand, ex.Message); return false; } }
Модель -
public partial class Escalation { public int ID { get; set; } public string Application { get; set; } public string EM { get; set; } public string status { get; set; } public string ProblemStatement { get; set; } public string Impact { get; set; } public string EscalationActions { get; set; } public System.DateTime UpdatedTime { get; set; } public string UpdatedBy { get; set; } }
HTML-элемент списка приложений -
<div class="form-adjacent"> <label class="col-md-3 control-label" for="App">App</label> <div class="col-md-8"> <select id="App" name="Application" onchange="" class="form-control"> <option value="SAP">SAP</option> <option value="EME">EME</option> </select> </div> </div>