我正在尝试运行一个单元测试(使用Moq),该测试基本上断言新记录已添加到我们的测试数据库中。
下面的查询加载一个 User 实体,并应加载 User 上的导航属性,我们将其称为 EntityA。单元测试最终到达一个方法,该方法的主体包含以下内容:
return context.Entry(this)
.Collection(c => c.EntityA)
.Query();
context变量作为参数传递到方法中,并且是我们正在使用的DbContext的实例,而this代表用户。 当尝试运行此特定代码时,我收到以下错误:
System.InvalidOperationException : The navigation 'User.EntityA' cannot be loaded because the entity is not being tracked. Navigations can only be loaded for tracked entities.
这个方法已经存在相当长一段时间了,所以我想知道这是否只是需要向此查询添加一些显式跟踪属性(也许是.AsTracking?)的测试。我不知道为什么以前没有发现这一点,因为它被用在我们代码库的多个高可见度区域中。我对如何解决这个问题的任何想法持开放态度。
option.UseQueryTrackingBehavior(QueryTrackingBehavior.NoTracking);