2016-04-12 2 views
0

Я пытаюсь войти исключения в 2012 базы данных SQLServer с использованием рамки сущности, однако, когда мой код попадет в стадию сохранения в базу данных я получаю сообщение об ошибке говорящегоИсключение Logging метания пустой ссылка ошибка

System.NullReferenceException был необработанным кодом пользователя
HResult = -2147467261 Message = Ссылка на объект не установлена ​​в экземпляр объекта.

Я вставил свой код ниже

public IEnumerable<SensorMetricItem> GetDeviceSensorDashboardDetails(int AssetInstanceId) 
{ 
    try 
    { 
     using (var context = new EnigmaEntities()) 
     { 
      var dashboardSensorEntities = context.usp_Read_DeviceSensorDashboardDetails_List(AssetInstanceId).ToList(); 
      return dashboardSensorEntities.Select(rd => new SensorMetricItem(rd.sensorId, rd.AssetInstanceID, rd.exception, rd.sensorDesc, rd.Total ?? 0, rd.Abbreviation, rd.sensorGuid)).ToList(); 
     } 
    } 
    catch (Exception ex) 
    { 
     SendExcepToDB(ex); 
     return null; 
    } 
} 
public static void SendExcepToDB(Exception exdb) 
{ 
    using (var context = new EnigmaEntities()) 
    { 
     var exceptionEntity = context.tbl_Audit_SystemLog.FirstOrDefault(); 
     exceptionEntity.ErrorMessage = exdb.Message.ToString(); 
     context.SaveChanges(); 
    } 
} 

Я также попытался

public void SendExcepToDB(Exception exdb) 
    { 

     using (var context = new EnigmaEntities()) 
     { 
      var exceptionEntity = new tbl_Audit_SystemLog 
      { 
       ErrorMessage = exdb.Message, 
       ServiceID = 0, 
       FunctionName = "", 
       Version = "", 
       StackTrace = "" , 
       Severity = "" , 
       URL = "" , 
       UserID = 0, 
       CreatedAt = DateTime.Now 

      }; 

     context.tbl_Audit_SystemLog.Add(exceptionEntity); 
     context.SaveChanges(); 

код выше, дает мне ошибку на context.SaveChanges «System.Data.Entity.Validation. DbEntityValidationException не был обработан кодом пользователя HResult = -2146232032 Сообщение = Не удалось выполнить проверку для одного или нескольких объектов. Подробнее см. Свойство EntityValidationErrors.Источник = EntityFramework»

ответ

0

Эта линия:

var exceptionEntity = context.tbl_Audit_SystemLog.FirstOrDefault(); 

вернет ноль, если нет строки в tbl_Audit_SystemLog, что приведет к следующей строке, чтобы дать NullReferenceException

+0

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

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