You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET 6.0中EfCore.TestSupport的EfInMemory.CreateOptions替代方案是什么?

替代方案说明

EfCore.TestSupport v5.3.0 针对.NET 6+调整了API,原EfInMemory.CreateOptions<TContext>的功能可通过以下两种方式替代:

方式1:使用官方封装的替代方法

这是推荐的简化方案,内置内存数据库配置且自动处理测试隔离,避免测试间数据污染:

using TestSupport.EfHelpers;
using Xunit;

namespace TestProject1
{
    [Fact]  
    public async Task GetData_WhenNotExist_ShouldReturnNull()
    {
        var options = EfTestHelpers.CreateUniqueClassOptions<ApplicationDbContext>();
        // 后续可通过options创建上下文实例:
        // using var context = new ApplicationDbContext(options);
    }
}

如果需要跨测试类共享数据库(不推荐,易引发测试污染),可改用EfTestHelpers.CreateUniqueDatabaseOptions<ApplicationDbContext>方法。

方式2:手动配置EF Core原生内存数据库

若需精细化控制数据库参数(如指定自定义名称、添加额外配置),可直接使用EF Core原生API:

using Microsoft.EntityFrameworkCore;
using System;
using Xunit;

namespace TestProject1
{
    [Fact]  
    public async Task GetData_WhenNotExist_ShouldReturnNull()
    {
        var options = new DbContextOptionsBuilder<ApplicationDbContext>()
            .UseInMemoryDatabase(databaseName: "TestDb_" + Guid.NewGuid()) // 生成唯一名称避免测试冲突
            .Options;
        // 后续使用上下文:
        // using var context = new ApplicationDbContext(options);
    }
}

内容的提问来源于stack exchange,提问作者Mike Bluer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 18:20:20