entity-framework - 当子数据为空时,实体的 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 上运行。其次,它并不总是可以用同步调用切换异步调用。
解决方案
推荐阅读
- ruby - 宝石更新不起作用
- c++ - 在 Linux 中链接时库冲突,但不是 OSX
- delphi - 如何在delphi中获得拉伸TImage的新尺寸
- php - 如何使用 html5、css3 和 php 创建交互式搜索栏,结果构建并返回一个新的组合页面?
- angular - DOMException 在 Angular 2+ 中使用 jsPDF 生成 pdf
- angular - Angular 6中的ngClass函数阻止了插值?
- ios - XCUITest 与 TestRail 的集成
- jquery - 日期选择器的查询版本
- node.js - 节点 8 突然 EADDRINUSE 错误
- mysql - 关于 MySQL 存储过程