C# Xunit和EFCore——模仿一对多关系不起作用 简介
我在模拟数据库时遇到了问题,因为我的用户和雇员之间存在一对多关系。雇佣关系被正确地添加到模拟数据库中,但是当相同的实体被添加到用户实体中的雇佣关系集合中时,它不会被加载 代码 这些只是这两个类的重要部分 使用者 公共虚拟ICollection雇员{get;}=new List(); 就业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的东西来创建实体。我创建就业实体,在创建用户实
[必需]
[外键(用户名(用户))]
公共Guid用户标识{get;set;}
公共虚拟用户?用户{get;set;}
例子
我使用名为EntityHelper
的东西来创建实体。我创建就业实体,在创建用户实体时使用它(调试时这些实体都正确创建)。我使用db.AddRange()
将实体添加到数据库中
下面是它的样子
问题
正如我前面提到的,几乎所有内容都正确地添加到数据库中。用户及其数据,以及雇佣关系。然而,用户中的employments集合是空的(即使我创建的用户实体拥有它)。我不确定这是否是EF Core或XUnit的问题,或者可能是什么问题
了解其他一些事实可能会很好:
- 该测试使用一个SqLite内存数据库
- 它基于DbContext
。include(u=>u.Employments)
。Hi Anton,因为您在数据库上下文中使用内存中的数据库,这似乎更像是一个集成测试,而集成测试通常不会mock
任何东西,从某种意义上说,您希望测试代码的具体实现。当调试器抛出(我怀疑)异常时,能否提供收到的错误消息以及调试器的映像?。如果停止调试器,请计算DbContext.User.ToList()?