我已将 Web 应用程序项目从 .NET Core 2.1 迁移到 3.1(也将 EF Core 从 2.1.1 迁移到 3.1.0)。
迁移后,一些单元测试不再工作,抛出重复键数据库异常。
我模拟了这个问题,并意识到带选项的 EF 核心UseInMemoryDatabase在 3.1 中的行为有所不同,它不会清理旧数据。
在第二种测试方法中,People表已经包含从第一个测试添加的数据,这在 2.1 中没有发生
有谁知道如何使内存数据库适用于每个单元测试?
这是我的测试代码:
AppDbContext.cs
using Microsoft.EntityFrameworkCore;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Text;
namespace MyConsoleApp.Database
{
public class AppDbContext: DbContext
{
protected AppDbContext(DbContextOptions options) : base(options) { }
public AppDbContext(DbContextOptions<AppDbContext> options) : this((DbContextOptions)options)
{
}
public virtual DbSet<Person> Person { get; set; }
}
public class Person
{
[Key]
public int Id { …Run Code Online (Sandbox Code Playgroud) c# unit-testing dbcontext entity-framework-core .net-core-3.1