0

所以我正在尝试升级 SQLite 数据库。我的升级需要我更改列数据类型。因此,我的思考过程是(我将调用表格foo):

  1. 创建一个foo_temp表。
  2. 将 foo 中的旧数据插入foo_temp表中。
  3. 放下旧foo桌子。
  4. 将表更改foo_temp为 foo。

但是,由于外键约束,它在第 3 步失败。我已经尝试了从PRAGMA foreign_keys = OFF;在 drop 之前插入 a 到将 a 附加foreign keys=false;到连接字符串的所有方法。Fluent Nhibernate 似乎不会让我放弃这张桌子。当我配置“Fluently”连接时,也许有一个设置可以禁用?我似乎找不到它。

我注意到当我使用 UI 客户端(如 SQLiteSpy)时,删除表没有问题。这可能是什么原因造成的?

4

1 回答 1

0

所以我想出了一个似乎可行的解决方案。使用我在这里找到的代码(归功于 ppiotrowicz):

在 nhibernate 中启用 SQLite 外键

我基本上换掉并引用了那个驱动PRAGMA foreign_keys = ON程序PRAGMA foreign_keys = OFFSQLiteConfiguration.Standard.ConnectionString(cs).Driver<MyDriver>()

于 2013-02-28T19:48:36.650 回答