Как я могу найти, какие значения мне не хватает при отладке?

Я пытаюсь добавить что-то в мой 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 ответ

Похоже, идентификатор, определенный для человека, которого вы пытаетесь добавить, является нулевым. Если у вас не настроено создание идентификатора базы данных, вам нужно будет указать идентификатор для этого человека, прежде чем добавить его в контекст.

Другие вопросы по тегам