当子数据为空时,实体的EF Core 2.1.4 NRE

时间:2018-10-19 01:31:16

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

我们正在将我们的项目从.net core 1.0迁移到2.1。自从我将代码迁移到2.1之后,我们的某些测试就开始失败。一种这样的情况是因为当子属性之一为null时,我们的实体抛出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;

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

请参阅解决方法here和问题的另一提述here

enter image description here

0 个答案:

没有答案