C# Xunit和EFCore——模仿一对多关系不起作用 简介

C# Xunit和EFCore——模仿一对多关系不起作用 简介,c#,mocking,entity-framework-core,dbcontext,xunit,C#,Mocking,Entity Framework Core,Dbcontext,Xunit,我在模拟数据库时遇到了问题,因为我的用户和雇员之间存在一对多关系。雇佣关系被正确地添加到模拟数据库中,但是当相同的实体被添加到用户实体中的雇佣关系集合中时,它不会被加载 代码 这些只是这两个类的重要部分 使用者 公共虚拟ICollection雇员{get;}=new List(); 就业 [必需] [外键(用户名(用户))] 公共Guid用户标识{get;set;} 公共虚拟用户?用户{get;set;} 例子 我使用名为EntityHelper的东西来创建实体。我创建就业实体,在创建用户实

我在模拟数据库时遇到了问题,因为我的用户和雇员之间存在一对多关系。雇佣关系被正确地添加到模拟数据库中,但是当相同的实体被添加到用户实体中的雇佣关系集合中时,它不会被加载

代码 这些只是这两个类的重要部分

使用者 公共虚拟ICollection雇员{get;}=new List(); 就业
[必需]
[外键(用户名(用户))]
公共Guid用户标识{get;set;}
公共虚拟用户?用户{get;set;}
例子 我使用名为
EntityHelper
的东西来创建实体。我创建就业实体,在创建用户实体时使用它(调试时这些实体都正确创建)。我使用
db.AddRange()
将实体添加到数据库中

下面是它的样子

问题 正如我前面提到的,几乎所有内容都正确地添加到数据库中。用户及其数据,以及雇佣关系。然而,用户中的employments集合是空的(即使我创建的用户实体拥有它)。我不确定这是否是EF Core或XUnit的问题,或者可能是什么问题

了解其他一些事实可能会很好:

  • 该测试使用一个SqLite内存数据库
  • 它基于DbContext

答案是在从数据库获取用户的LINQ查询中缺少一个
。include(u=>u.Employments)

Hi Anton,因为您在数据库上下文中使用内存中的数据库,这似乎更像是一个集成测试,而集成测试通常不会
mock
任何东西,从某种意义上说,您希望测试代码的具体实现。当调试器抛出(我怀疑)异常时,能否提供收到的错误消息以及调试器的映像?。如果停止调试器,请计算
DbContext.User.ToList()?