C# 如何测试原始sql实体框架
我有一个sql脚本,我想用实体框架在单元测试中执行。当我使用InMemoryDb(不是SQLite)时,会出现以下错误:C# 如何测试原始sql实体框架,c#,sql,.net-core,entity-framework-core,C#,Sql,.net Core,Entity Framework Core,我有一个sql脚本,我想用实体框架在单元测试中执行。当我使用InMemoryDb(不是SQLite)时,会出现以下错误: "Relational-specific methods can only be used when the context is using a relational database provider. 我曾尝试使用SQLite,但在尝试执行SQL时出现以下错误: SQLite Error 1: 'near \"DECLARE\": syntax error'. 这是
"Relational-specific methods can only be used when the context is using a relational database provider.
我曾尝试使用SQLite,但在尝试执行SQL时出现以下错误:
SQLite Error 1: 'near \"DECLARE\": syntax error'.
这是因为SQLite正在使用另一种SQL方言
以下是我的sql脚本的第一部分:
DECLARE @uniqueAccountsAndNames AS TABLE(
[GlobalId] UNIQUEIDENTIFIER INDEX ix UNIQUE,
[RowNumber] INT,
[Account] NVARCHAR(100) INDEX IX2 NONCLUSTERED,
[FirstName] NVARCHAR(500),
[LastName] NVARCHAR(500),
[Source] NVARCHAR(50)
);
下面是我在单元测试中的代码:
var connection = new SqliteConnection("datasource=:memory:");
connection.Open();
var options = new DbContextOptionsBuilder<SecurityContext>()
.UseSqlite(connection)
.Options;
using (var context = new SecurityContext(options))
{
context.Database.EnsureCreated();
SeedData(context);
var sqll = System.IO.File.ReadAllText(@"test.sql");
var test = context.Database.ExecuteSqlCommand(sqll);
}
var connection=newsqliteconnection(“数据源=:内存:”);
connection.Open();
var options=new DbContextOptionsBuilder()
.UseSqlite(连接)
.选择;
使用(var context=newsecuritycontext(选项))
{
context.Database.recreated();
种子数据(上下文);
var sqll=System.IO.File.ReadAllText(@“test.sql”);
var test=context.Database.ExecuteSqlCommand(sqll);
}
你对我如何完成这项工作有什么建议吗?如果你想对SQL进行单元测试,那么你应该使用SQL Server进行测试:可能是SQL Server LocalDB?@mu88,它要求我下载并安装它..这是个问题吗?如果是这样的话,你可以在你的帖子中添加这个要求