如何在Entity Framework中对级联删除实体进行单元测试?

时间:2016-11-30 07:03:00

标签: c# entity-framework

我们如何测试实体框架中实体的级联删除?

我有两个实体[Parent and Child]并且我正在使用FakeDbset(在内存集合中),如果我删除了父级,那么在级联的情况下他们的所有子项都会从数据库中删除,那么如何测试相同的场景在FakeDbSet?

我知道级联是数据库功能,努力在这种情况下工作吗?

1 个答案:

答案 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));
    }
}