我们如何测试实体框架中实体的级联删除?
我有两个实体[Parent and Child]并且我正在使用FakeDbset(在内存集合中),如果我删除了父级,那么在级联的情况下他们的所有子项都会从数据库中删除,那么如何测试相同的场景在FakeDbSet?
我知道级联是数据库功能,努力在这种情况下工作吗?
答案 0 :(得分:1)
https://github.com/aspnet/EntityFramework/issues/3924
这对我有帮助,你需要让孩子在你的环境中,所以你需要。使用Eager Loading包括孩子。
以下代码来自我附上的链接:
[Fact]
void test_written_in_notepad()
{
List<int> childIds;
using (var context = CreateInMemoryContext())
{
var parent = context.Parents.Include(p => p.Children).FirstOrDefault(p => p.Id == 1);
childIds = p.Children.Select(c => c.Id).ToList();
context.Remove(parent);
context.SaveChanges();
}
using (var context = CreateInMemoryContext())
{
Assert.Empty(context.Children.Where(c => childIds.Contains(c.Id));
}
}