内存中的 EFCore 批量插入和 SQLite:没有这样的 table:INFORMATION_SCHEMA.COLUMNS"

EFCore Bulk Insert & SQLite In Memory: no such table: INFORMATION_SCHEMA.COLUMNS"

我正在使用 EFCore BulkExtensions 2.5.0 与 Entity Framework Core 2.2.3 和 EFCore.SQLite 2.2.6.

我有这样的代码:

// Repo that throws exception on BulkInsert
public class UserRepository
{
   private readonly IDbContextProvider<ReportContext> _dbContextProvider;
  
   public async Sync(IList<User> users)
   { 
        await _dbContextProvider.Context.BulkInserOrUpdateAsync(users);
   }
}

// Poco Model
public class User
{
   public string Id {get;set;}
   public string Name {get; set;}
}

// Simple DbContext
public class ReportsContext : DbContext
{
   public DbSet<User> Users { get; set; }
}

我的应用程序代码(使用 EFCore.Sql)运行得很好。但是当我的测试代码使用 SQLite in-memory 运行时,我得到一个异常:

No such table: INFORMATION_SCHEMA.COLUMNS

Microsoft.Data.Sqlite.SqliteException : SQLite Error 1: 'no such table: INFORMATION_SCHEMA.COLUMNS'.

at Microsoft.Data.Sqlite.SqliteException.ThrowExceptionForRC(Int32 rc, sqlite3 db)
at Microsoft.Data.Sqlite.SqliteCommand.PrepareAndEnumerateStatements(Stopwatch timer)+MoveNext()
at Microsoft.Data.Sqlite.SqliteCommand.ExecuteReader(CommandBehavior behavior)
at Microsoft.Data.Sqlite.SqliteCommand.ExecuteReaderAsync(CommandBehavior behavior, CancellationToken cancellationToken)
at Microsoft.Data.Sqlite.SqliteCommand.ExecuteDbDataReaderAsync(CommandBehavior behavior, CancellationToken cancellationToken)
at EFCore.BulkExtensions.TableInfo.CheckHasIdentityAsync(DbContext context, CancellationToken cancellationToken)
at EFCore.BulkExtensions.SqlBulkOperation.MergeAsync[T](DbContext context, IList1 entities, TableInfo tableInfo, OperationType operationType, Action1 progress, CancellationToken cancellationToken)
at MyCode.Repositories.UserRepository.<>c__DisplayClass5_0.<b__0>d.MoveNext() in C:\projects\MyCode\Repositories\UserRepository.cs:line 48

INFORMATION_SCHEMA.COLUMNS 不是我的数据模型的一部分,也不是我要创建或使用的东西。在内存模式下运行时,我是否需要配置或调整 EF Core 或 SQLite 以使其支持批量操作?

我已经尝试 turning on EF Core logging 并且可以看到正在处理我的 Db 模型并且正在创建 tables,但是批量操作没有输出,所以我不确定生成了什么 SQL 语句正在寻找这个 Information_Schema.Columns table.

看起来这是 EFCore.BulkExtensions 中 2.5.0 的错误,它没有完整的 SQLite 支持。它适用于版本 2.6.4https://github.com/borisdj/EFCore.BulkExtensions/issues/308