gpt4 book ai didi

c# - 数据库存在失败的 SQLite 操作(.NET 4.0、EF 4.4)

转载 作者:行者123 更新时间:2023-12-02 03:02:32 44 4
gpt4 key购买 nike

我正在使用 .NET 4.0 和 Entity Framework 4.4

我曾经工作过很多年的代码突然卡住了我——我完全不知道为什么。我已将问题代码提炼为一个非常简单的序列。请注意,如果我在磁盘上创建物理文件,代码行为不会改变;它根本不涉及问题。

string sDatabaseFilename = @"c:\users\bob\database.sqlite";
//System.IO.File.Create(sDatabaseFilename).Close();
System.Data.SQLite.SQLiteConnection cConnection = new System.Data.SQLite.SQLiteConnection("DataSource=" + sDatabaseFilename);
System.Data.Entity.DbContext dbContext = new System.Data.Entity.DbContext(cConnection, false);
System.Data.Entity.Database dDatabase = dbContext.Database;

dDatabase.ExecuteSqlCommand("PRAGMA foreign_keys=ON;");

app.config 数据提供者:

  <add name="SQLite Data Provider" invariant="System.Data.SQLite" description=".Net Framework Data Provider for SQLite" type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite" />

任何接触 dDatabase(例如上面的 ExecuteSqlCommand)或访问 dbContext.ObjectContext 的尝试都会导致

System.Data.ProviderIncompatibleException occurred
HResult=-2146232032
Message=DatabaseExists is not supported by the provider.
Source=System.Data.Entity
StackTrace:
at System.Data.Common.DbProviderServices.DbDatabaseExists(DbConnection connection, Nullable`1 commandTimeout, StoreItemCollection storeItemCollection)
InnerException:

我使用了 v1.0.88 SQLite 的东西,然后它停止工作(我在同一解决方案的单独项目中进行了一些 HTML 抓取)。我已升级到 SQLite v1.0.98 以尝试解决该问题,但没有成功。

最佳答案

我无法找出问题所在,但我最终解决了它。

解决方法是创建一个新的解决方案并从原始源文件再次构建项目。我首先创建了一个准系统解决方案来弄清楚我需要什么才能使其工作,然后从那里开始构建。

未能解决问题的事情:

  1. 通过 NuGet 将损坏的解决方案升级到 EF 6.0 和相应的 SQLite。

  2. 将损坏的解决方案的 app.config 和 packages.config 文件与准系统解决方案进行匹配。

  3. 尝试通过删除与准系统解决方案不匹配的部分来“清理”损坏的解决方案中的项目文件。

无论是什么导致我的旧解决方案出现问题,都在项目文件中的某个位置,但我从未发现它是什么。请注意,这一切都是通过 Visual Studio 2010 进行的。

关于c# - 数据库存在失败的 SQLite 操作(.NET 4.0、EF 4.4),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33785908/

44 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com