小编Jam*_*mes的帖子

将 Entity Framework Core 3.1 与 ServiceProvider 中的 UseInMemoryDatabase 选项一起使用(范围生命周期)

我已将 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

14
推荐指数
3
解决办法
2万
查看次数