Xunit 和 EFCore - 模拟一对多关系不起作用
Xunit and EFCore - Mocking One-To-Many relationship does not work
简介
我在为用户和就业之间的一对多关系模拟数据库时遇到问题。就业已正确添加到模拟数据库中,但当将同一实体添加到用户实体中的就业集合时,它不会加载。
代码
以上只是这两个案例的重要部分类
用户
public virtual ICollection<Employement> Employments { get; } = new List<Employment>();
就业
[Required]
[ForeignKey(nameof(User))]
public Guid UserId { get; set; }
public virtual User? User { get; set; }
例子
我使用一种叫做 EntityHelper
的东西来创建实体。我创建了就业实体,在我创建用户实体时使用它(这些都是在我调试时正确创建的)。我使用 db.AddRange()
将实体添加到数据库中。
这是它的样子。
问题
正如我之前提到的,几乎所有内容都已正确添加到数据库中。用户及其数据和就业。然而,用户中的就业集合是空的(即使我创建的用户实体有它)。我不确定这是 EF Core 或 XUnit 的问题还是它可能是什么。
其他一些可能值得了解的事实:
- 测试使用 SqLite 内存数据库
- 它基于 DbContext
在从数据库中获取用户的 LINQ 查询中缺少答案 .include(u => u.Employments)
。
简介
我在为用户和就业之间的一对多关系模拟数据库时遇到问题。就业已正确添加到模拟数据库中,但当将同一实体添加到用户实体中的就业集合时,它不会加载。
代码
以上只是这两个案例的重要部分类
用户
public virtual ICollection<Employement> Employments { get; } = new List<Employment>();
就业
[Required]
[ForeignKey(nameof(User))]
public Guid UserId { get; set; }
public virtual User? User { get; set; }
例子
我使用一种叫做 EntityHelper
的东西来创建实体。我创建了就业实体,在我创建用户实体时使用它(这些都是在我调试时正确创建的)。我使用 db.AddRange()
将实体添加到数据库中。
这是它的样子。
问题
正如我之前提到的,几乎所有内容都已正确添加到数据库中。用户及其数据和就业。然而,用户中的就业集合是空的(即使我创建的用户实体有它)。我不确定这是 EF Core 或 XUnit 的问题还是它可能是什么。
其他一些可能值得了解的事实:
- 测试使用 SqLite 内存数据库
- 它基于 DbContext
在从数据库中获取用户的 LINQ 查询中缺少答案 .include(u => u.Employments)
。