【问题标题】:Foreign Keys auto increment does not work in sqlite .NET provider外键自动增量在 sqlite .NET 提供程序中不起作用
【发布时间】:2011-09-27 20:48:27
【问题描述】:

我将多个数据插入到一个 sqlite 表中,并且总是返回相同的 ID。但是字段Id配置为PK+autoinc Id。

我用这个作为连接字符串:

public static void SetConnectionString(string dataDataAccessPath)
        {
            _connectionString = String.Format(@"Data Source={0};Foreign Keys=ON", dataDataAccessPath);
        }

除了“PRAGMA foreign_keys = ON;”之外,这个“Foreign Keys=ON”是为连接实现的必须为每个打开的连接执行。

现在我想知道为什么连接字符串上的新属性不起作用...

我有什么问题吗?

【问题讨论】:

    标签: .net sqlite foreign-keys connection-string pragma


    【解决方案1】:

    我不是 SQLite 方面的专家(实际上我没有这方面的实践经验),但我想您的 IDENTITY 字段是否会随着您的插入而自动递增,这与定义表而不是您正在使用的连接字符串。

    请注意,您不能增加 FOREIGN KEY 本身,而是需要增加带有 IDENTITY 字段的表,该字段用作 PRIMARY KEYFOREIGN KEY 然后引用。

    您能否添加您遇到问题的表的定义?

    【讨论】:

    • 这正是我所做的。我的表有一个 Id 作为 PK + Autoincrement 启用。但是对于另一张桌子,它可以工作……我使用 3.7.7.1。嗯...我使用的是 TransactionScope 而不是 SQLIteTransaction,并且 SQLiteCommand 对象的 Transaction + DbTransaction 属性为 NULL。也许有问题:/必须先使用 SQLiteTransaction 进行检查。
    • 如果它适用于另一个表,那么它应该与您的连接字符串无关(但无论如何都不应该与连接字符串有任何关系!)。我建议您发布用于创建工作表和非工作表的 SQL,以及实际执行不会增加您的身份字段的INSERTs 的代码。
    • 停下! ;-) 对于另一个表,当我也进行多次插入时它不起作用。我只是伪造了另一个插入。连接属性不起作用或由于 TransactionScope。我明天去看看,再见!
    • 好的,我说过我会做更多的测试。我发现外键连接属性有效;-) 通过这样做,我在屏幕前 20 英寸处发现了故障:p 我在某处传递了 commandInsert 而不是 commandSelectLastAutoIncId ...因此我得到了不好的结果。现在一切正常:)
    猜你喜欢
    • 2015-08-06
    • 2013-05-25
    • 1970-01-01
    • 2021-11-26
    • 2017-12-30
    • 2013-10-13
    • 2022-01-25
    • 1970-01-01
    • 2013-05-24
    相关资源
    最近更新 更多