在使用SQLite时,Fluent Nhibernate是否会在所有CreateSQLQuery调用上自动设置外键约束?

时间:2013-02-28 19:10:49

标签: c# sqlite nhibernate fluent-nhibernate

所以我试图升级SQLite数据库。我的升级要求我更改列数据类型。因此,我的思考过程就是这样做(我将调用表foo):

  1. 创建一个foo_temp表。
  2. 将旧数据从foo插入foo_temp表。
  3. 删除旧foo表。
  4. foo_temp表更改为foo。
  5. 然而,由于外键限制,它在第3步失败。我已经尝试了从在放置之前插入PRAGMA foreign_keys = OFF;到将foreign keys=false;附加到连接字符串的所有内容。它不会出现Fluent Nhibernate会让我放弃这张桌子。也许有一个设置,我可以在配置' Fluently'连接?我似乎无法找到它。

    当我去使用UI客户端(如SQLiteSpy)时,我注意到它丢弃表没有任何问题。可能导致这种情况的原因是什么?

1 个答案:

答案 0 :(得分:0)

所以我想出了一个似乎有用的解决方案。使用我在这里找到的代码(信用转到ppiotrowicz):

enabling SQLite foreignkeys in nhibernate

我基本上为PRAGMA foreign_keys = ON换出PRAGMA foreign_keys = OFF并使用SQLiteConfiguration.Standard.ConnectionString(cs).Driver<MyDriver>()

引用该驱动程序