如何找到调试时缺少的值?

时间:2019-01-24 15:39:39

标签: c# .net entity-framework debugging argumentnullexception

我尝试使用以下代码将一些内容异步添加到我的dbcontext中:

var entry = await _context.AddAsync(person);

但是,出现以下异常:

  

System.ArgumentNullException:值不能为null。参数名称:键

     

在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实体类型)

     

Microsoft.EntityFrameworkCore.ChangeTracking.Internal.NavigationFixer.InitialFixup(InternalEntityEntry条目,ISet`1 handleForeignKeys,布尔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(任务任务)上

     

在System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()

     

在PersonRepository.d__4.MoveNext()

     

---从上一个引发异常的位置开始的堆栈结束跟踪---

     

在System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()

     

在System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)上

     

在System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()

     

在PersonController.cs中的PersonController.d__3.MoveNext():第63行

在阅读这些语句时,我找不到我可能缺少的值。而且在调试时,我不知道要寻找什么。 如何找到调试时缺少的值?

1 个答案:

答案 0 :(得分:1)

为您要添加的人定义的ID似乎为空。如果您没有配置数据库ID生成,那么在将其添加到上下文之前,需要为该人提供一个ID。