2015-12-10 6 views
1

Я работаю с чат-сервером, например Jobbr.net. когда я закрыть группу вкладку чата, то я получаю DbUpdateException было Unhandled кода пользователяDbUpdateException был необработанным кодом пользователя в asp.net MVC

Код:

public void CommitChanges() 
{ 
_db.SaveChanges(); 
} 

Click here to see screenshot

+0

Вы напишите весь код, в котором вы вызываете функцию CommitChanges(). –

+0

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

ответ

1

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

Попытайтесь поймать и зарегистрировать System.Data.Entity.Infrastructure.DbUpdateException. Он должен сказать вам, какая организация вызывает проблему. Вот код регистрации, который мы используем:

using NLog; 

private static Logger Logger = LogManager.GetCurrentClassLogger(); 

try { 
    _db.SaveChanges(); 
} 
catch (System.Data.Entity.Infrastructure.DbUpdateException upEx) { 

    if (upEx.Entries != null && upEx.Entries.Any()) { 
     Logger.Debug("DbUpdateException contained '{0}' entries:", upEx.Entries.Count()); 

     // get info about the Entity that produced the error 
     foreach (var dbEntityEntry in upEx.Entries) { 
      if (dbEntityEntry.Entity != null) { 
       var entityType = dbEntityEntry.Entity.GetType(); 
       try { 
        var id = entityType.GetProperty("Id").GetValue(dbEntityEntry.Entity, null); 
        Logger.Debug("DbUpdateException contains DbEntityEntry - Type: '{0}', Id: '{1}', State: '{2}'", entityType.Name, id, dbEntityEntry.State.ToString("G")); 
       } catch (Exception) { 
        Logger.Debug("DbUpdateException contains DbEntityEntry - Type '{0}', Id: unknown, State: '{2}'", entityType.Name, dbEntityEntry.State.ToString("G")); 
       } 
      } 
     } 
    } 
} 
+0

Здравствуйте, @Georg, этот блок catch автоматически разрешит проблему с внешним ключом или нет? если нет, то какие изменения мне нужно сделать? – Aman

+0

В вашем коде я получаю External Key Exception – Aman

+0

Кодовый блок, приведенный выше, просто позволит вам собрать дополнительную информацию об ошибке. Если возникает исключение, ошибка будет регистрироваться и ничего не будет сохранено. Исключение внешнего ключа указывает на проблему с данными, которые вы хотите сохранить - отношения, которые требуются вашей моделью данных, не были установлены в сущности, которую вы пытаетесь сохранить. Вы должны проверить метод, который вызывает 'CommitChanges()', и проверить, правильно ли установлено все объекты, которые должны быть обновлены. –