我正在尝试与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()
;"
这是怎么回事?预先感谢