C# 如何测试原始sql实体框架

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'. 这是

我有一个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'.
这是因为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,它要求我下载并安装它..这是个问题吗?如果是这样的话,你可以在你的帖子中添加这个要求