gpt4 book ai didi

sql - 带有EF Core和内存数据库提供程序的原始SQL

转载 作者:行者123 更新时间:2023-12-04 17:43:38 26 4
gpt4 key购买 nike

我的API路由之一使用了原始的sql merge into命令来进行原子upsert操作,在自动测试中,我有一个使用内存db提供程序的TestServer实例。它给我一个错误,可能是因为内存提供程序不支持运行原始sql命令-是这样吗?如果没有,我如何使它工作?

这是测试的Startup类:

// In memory DB for testing
services.AddDbContext<MyContext>(optionsBuilder => optionsBuilder.UseInMemoryDatabase("stuff"));
services.AddDbContext<MyStatusContext>(optionsBuilder => optionsBuilder.UseInMemoryDatabase("status"));
services.AddDbContext<MyUserRolesContext>(optionsBuilder => optionsBuilder.UseInMemoryDatabase("userroles"));

API代码符合您的期望:
var count = await context.Database.ExecuteSqlCommandAsync(@"merge into ...", default(CancellationToken), ...);
return count;

该代码在实际数据库中的生产环境中运行良好,但在测试中我无法与内存提供程序一起使用。我有什么希望吗?自定义sql脚本的通常测试策略是什么?

最佳答案

您没有希望,因为InMemory提供程序是NoSQL非关系提供程序。您应该使用SQL Server(例如localdb)进行集成测试

关于sql - 带有EF Core和内存数据库提供程序的原始SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46082301/

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