Как я могу найти, какие значения мне не хватает при отладке?
Я пытаюсь добавить что-то в мой dbcontext асинхронно, используя следующий код:
var entry = await _context.AddAsync(person);
Однако я получаю следующее исключение:
System.ArgumentNullException: значение не может быть нулевым. Имя параметра: ключ
в System.ThrowHelper.ThrowArgumentNullException (аргумент ExceptionArgument)
в System.Collections.Generic.Dictionary`2.FindEntry(ключ TKey)
в System.Collections.Generic.Dictionary`2.TryGetValue(ключ TKey, TValue и значение)
в Microsoft.EntityFrameworkCore.ChangeTracking.Internal.StateManager.TryGetEntry(объектный объект, IEntityType entityType)
в Microsoft.EntityFrameworkCore.ChangeTracking.Internal.NavigationFixer.InitialFixup(запись InternalEntityEntry, ISet`1 handledForeignKeys, логическое значение fromQuery)
в Microsoft.EntityFrameworkCore.ChangeTracking.Internal.NavigationFixer.StateChanged(запись InternalEntityEntry, EntityState oldState, логическое значение fromQuery)
в Microsoft.EntityFrameworkCore.ChangeTracking.Internal.InternalEntityEntryNotifier.StateChanged(запись InternalEntityEntry, EntityState oldState, логическое значение fromQuery)
в Microsoft.EntityFrameworkCore.ChangeTracking.Internal.InternalEntityEntry.FireStateChanged(EntityState oldState)
в Microsoft.EntityFrameworkCore.ChangeTracking.Internal.InternalEntityEntry.d__18.MoveNext ()
--- Конец стека трассировки от предыдущего местоположения, где было сгенерировано исключение ---
в System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Задача)
в Microsoft.EntityFrameworkCore.ChangeTracking.Internal.EntityGraphAttacher.d__6.MoveNext ()
--- Конец стека трассировки от предыдущего местоположения, где было сгенерировано исключение ---
в System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Задача)
в Microsoft.EntityFrameworkCore.ChangeTracking.Internal.EntityEntryGraphIterator.d__1`1.MoveNext ()
--- Конец стека трассировки от предыдущего местоположения, где было сгенерировано исключение ---
в System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Задача)
в Microsoft.EntityFrameworkCore.DbContext.d__64.MoveNext ()
--- Конец стека трассировки от предыдущего местоположения, где было сгенерировано исключение ---
в System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Задача)
в Microsoft.EntityFrameworkCore.DbContext.d__66`1.MoveNext ()
--- Конец стека трассировки от предыдущего местоположения, где было сгенерировано исключение ---
в System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Задача)
at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult ()
at PersonRepository.d__4.MoveNext ()
--- Конец стека трассировки от предыдущего местоположения, где было сгенерировано исключение ---
в System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Задача)
at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult ()
в PersonController.d__3.MoveNext() в PersonController.cs: строка 63
Читая эти заявления, я не мог найти, какие значения я мог пропустить. И во время отладки я не знаю, что искать. Как я могу найти, какие значения мне не хватает при отладке?
1 ответ
Похоже, идентификатор, определенный для человека, которого вы пытаетесь добавить, является нулевым. Если у вас не настроено создание идентификатора базы данных, вам нужно будет указать идентификатор для этого человека, прежде чем добавить его в контекст.