2016-07-13 3 views
0

У меня возникают проблемы при отображении результатов в CRM-запроса к моей пользовательской модели, если значение равно нулю, я пытаюсь использовать следующий код:Преобразовать в соответствующий тип, если переменная не является нулевым

foreach (account acc in accounts.BusinessEntities) 
{ 
    if ((acc.accountid != null)) 
    { 
     try 
     { 
      Account newAccount = new Account(); 
      newAccount.AccountID = acc.accountid.Value; 
      newAccount.MPRN = Convert.ToInt64(acc.new_mprnnumber); 
      newAccount.CustomerNumber = acc.new_customernumber; 
      newAccount.CurrentLiftDate = acc.new_preferredliftday.Value.Equals(DBNull.Value) ? 0 : Convert.ToInt32(acc.new_preferredliftday.Value); 
      newAccount.MonthlyAmount = acc.new_regularliftamount.Value.Equals(DBNull.Value) ? 0 : Convert.ToDecimal(acc.new_regularliftamount.Value); 
      newAccount.DepositDate = acc.new_depositdate.Equals(DBNull.Value) ? (DateTime?)null : Convert.ToDateTime(acc.new_depositdate.ToString()); 
      newAccount.DepositAmount = acc.new_depositamount.Value.Equals(DBNull.Value) ? 0 : Convert.ToDecimal(acc.new_depositamount.Value); 
      db.Accounts.Add(newAccount); 
      db.SaveChanges(); 
     } 
     catch(Exception ex) 
     { 
      System.Diagnostics.EventLog.WriteEntry("Application", "ERROR CREATING ACCOUNT IN BILLING ENGINE : " + ex.Message, System.Diagnostics.EventLogEntryType.Error); 
     } 
    } 
} 

Когда acc.new_depositdate имеет значение null, это не позволит мне установить значение даты в дату с нулевым значением и, похоже, продолжает пытаться преобразовать нулевое значение, поскольку я получаю ошибку ссылки объекта

+0

Вы имеете в виду 'null' или' DBNull'? Если это действительно «нуль», то, очевидно, вызов «.Equals» будет генерировать исключение с нулевой ссылкой. Пожалуйста, разместите свое точное сообщение об ошибке + трассировку стека? – sstan

ответ

1

Вы можете изменить :

newAccount.DepositDate = acc.new_depositdate.Equals(DBNull.Value) ? (DateTime?)null : Convert.ToDateTime(acc.new_depositdate.ToString()); 

Для

newAccount.DepositDate = acc.new_depositdate == null ? (DateTime?)null : Convert.ToDateTime(acc.new_depositdate.ToString()); 

Таким образом, вы не пытаетесь вызвать .Equals() против нулевого значения (что, вероятно, причиной вашего NullReferenceException).

Возможно, вам также придется применить изменения к другим заданиям, чтобы предотвратить дальнейшие исключения.

Смежные вопросы