【问题标题】:Does Fluent Nhibernate automatically set Foreign Key Contraints on all CreateSQLQuery calls when using SQLite?使用 SQLite 时,Fluent Nhibernate 是否会在所有 CreateSQLQuery 调用上自动设置外键约束?
【发布时间】:2013-02-28 19:10:48
【问题描述】:

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

  1. 创建foo_temp 表。
  2. 将 foo 中的旧数据插入到 foo_temp 表中。
  3. 删除旧的foo 表。
  4. foo_temp 表更改为 foo。

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

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

【问题讨论】:

    标签: c# sqlite nhibernate fluent-nhibernate


    【解决方案1】:

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

    enabling SQLite foreignkeys in nhibernate

    我基本上将PRAGMA foreign_keys = ON 换成了PRAGMA foreign_keys = OFF,并使用SQLiteConfiguration.Standard.ConnectionString(cs).Driver<MyDriver>() 引用了该驱动程序

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-04-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-24
      • 1970-01-01
      • 2012-07-23
      • 2014-01-17
      相关资源
      最近更新 更多