gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 12:36:16 25 4
gpt4 key购买 nike

我们如何测试 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com