2
我們如何測試Entity Framework中實體的級聯刪除?如何在實體框架中單元測試級聯刪除實體?
我有兩個實體[父和子],我正在使用FakeDbset(在內存集合中),如果我刪除父級,那麼他們的所有子級從數據庫級聯的情況下刪除,那麼同樣的情況如何得到在FakeDbSet中測試?
我知道級聯是數據庫功能,是努力在這種情況下工作嗎?
我們如何測試Entity Framework中實體的級聯刪除?如何在實體框架中單元測試級聯刪除實體?
我有兩個實體[父和子],我正在使用FakeDbset(在內存集合中),如果我刪除父級,那麼他們的所有子級從數據庫級聯的情況下刪除,那麼同樣的情況如何得到在FakeDbSet中測試?
我知道級聯是數據庫功能,是努力在這種情況下工作嗎?
https://github.com/aspnet/EntityFramework/issues/3924
這幫助了我,你需要有孩子在你的範圍內,所以你需要使用預先加載到.INCLUDE孩子。
這下面的代碼是從我附鏈接:
[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));
}
}
不要單元測試此。如果約束從數據庫中刪除(無論出於何種原因,可能是錯誤的升級腳本),您的單元測試永遠不會注意到。這是集成測試或端到端測試的情況。 –