首页 > 解决方案 > 当子数据为空时,实体的 EF Core 2.1.4 NRE

问题描述

我们正在将我们的项目从 .net core 1.0 迁移到 2.1。自从我将代码迁移到 2.1 后,我们的一些测试开始失败。一种这样的情况是因为我们的实体在其中一个子属性为空时抛出 NRE。当我们在实体上调用DbSet.Include时会发生这种情况:

await this.goalEnvisionDbContext.UserConfirmations.Include(x => x.User).SingleOrDefaultAsync(uc => uc.UserId == userId);

在监视窗口和上下文中查看用户 ID 的值。但是函数调用返回 null 因为我们已经包含了加载子实体的调用。我应该如何修复测试?

作为参考,我们使用内存数据库进行测试。这是我为测试设置上下文的方式,

var builder = new DbContextOptionsBuilder<GoalEnvisionDbContext>();
builder.UseInMemoryDatabase("GoalEnvision.UnitTests");
dbContextOptions = builder.Options;

我们在其他几个测试中也遇到了类似的问题,但我搜索并发现了一个解决方案,建议我们应该使用同步调用,它将在 2.1 中修复,但我已经在 2.1.4 上运行。其次,它并不总是可以用同步调用切换异步调用。

在此处查看解决方法并在此处再次提及该问题

在此处输入图像描述

标签: entity-framework.net-coreasp.net-core-2.1ef-core-2.1

解决方案


推荐阅读