EF6和SQLite内存中引发“ SQLiteException:SQL逻辑错误,无此表”

时间:2019-06-13 06:54:16

标签: entity-framework-6 integration-testing sqlite-net

我正在尝试与Entity Framework 6一起设置SQLite(内存模式),因此我可以创建运行速度更快的集成测试。这就是我的packages.config的样子:

<packages>
  <package id="EntityFramework" version="6.2.0" targetFramework="net472" />
  <package id="System.Data.SQLite" version="1.0.111.0" targetFramework="net472" />
  <package id="System.Data.SQLite.Core" version="1.0.111.0" targetFramework="net472" />
  <package id="System.Data.SQLite.EF6" version="1.0.111.0" targetFramework="net472" />
  <package id="System.Data.SQLite.Linq" version="1.0.111.0" targetFramework="net472" />
</packages>

这是我的连接字符串:<add name="MyDBContext" connectionString="Data Source=:memory:" providerName="System.Data.SQLite" />

但是,当我运行以下代码时,类型为System.Data.SQLiteException且消息为SQL logic error no such table: People的异常将被抛出到SaveChanges()

using (var context = new MyDBContext())
{
    context.Persons.Add(new Person()
    {
        Name = "Someone",
    });

    context.SaveChanges();
}

这似乎与EF迁移有关,因为我在调用SaveChanges()之前的调试输出中看到以下错误:

SQLite error (1): no such table: __MigrationHistory in "SELECT 
[GroupBy1].[A1] AS [C1]
FROM ( SELECT 
    Count([Filter1].[A1]) AS [A1]
    FROM ( SELECT 
        1 AS [A1]
        FROM [__MigrationHistory] AS [Extent1]
        WHERE [Extent1]
SQLite error (1): no such table: __MigrationHistory in "SELECT 
[GroupBy1].[A1] AS [C1]
FROM ( SELECT 
    Count([Extent1].[A1]) AS [A1]
    FROM ( SELECT 
        1 AS [A1]
        FROM [__MigrationHistory] AS [Extent1]
    )  AS [Extent1]
SQLite error (1): no such table: EdmMetadata in "SELECT 
[Extent1].[Id] AS [Id], 
[Extent1].[ModelHash] AS [ModelHash]
FROM [EdmMetadata] AS [Extent1]
ORDER BY [Extent1].[Id] DESC LIMIT 1"

...然后在我尝试保存后

SQLite error (1): no such table: People in "INSERT INTO [People]([Name], [Age])
 VALUES (@p0, @p1);
SELECT [Id]
FROM [People]
WHERE last_rows_affected() > 0 AND [rowid] = last_insert_rowid()
;"

这是怎么回事?预先感谢

0 个答案:

没有答案