c# - 如何单元测试级联删除 Entity Framework 中的实体?

标签 c# entity-framework

我们如何测试 Entity Framework 中实体的级联删除?

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

我知道 cascade 是数据库特性,Effort 是否适用于这种情况?

最佳答案

https://github.com/aspnet/EntityFramework/issues/3924

这对我有帮助,您需要让 child 进入您的上下文,因此您需要使用 Eager Loading 包含 child 。

以下代码来 self 附加的链接:

[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));
    }
}

关于c# - 如何单元测试级联删除 Entity Framework 中的实体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40882198/

相关文章:

c# - ServiceStack REST 服务中的自定义异常处理

entity-framework - 如何在 Entity Framework 中定义存储过程(代码优先)?

c# - Entity Framework 5.0 代码中第一个一对一和一对多的关系

c# - 使用命名空间作为类型错误

c# - 编写 SQL 查询以从 CRM 2011 读取数据

c# - Swagger 不工作 Asp.net Core 如何打开 swagger ui

entity-framework - EF 4.2 代码优先和 DDD 设计问题

c# - 为什么要插入倍数?

c# - 模型/实体与复杂类型

c# - 如何调整不同分辨率的图像大小