SQLite的; “无法添加PRIMARY KEY列”-Exception

时间:2013-11-24 16:51:04

标签: c# sql

今天我开始处理数据库。我已经安装了SQLite和SQLite-net。我正在使用C#编写Windows 8.1应用程序。

我所拥有的是以下内容:

模特:

public class Subject
{
    [PrimaryKey, AutoIncrement]
    public int Id { get; set; }

    public string Name { get; set; }    
}

App.Xaml.cs中的OnLaunched-Event包含:

protected override void OnLaunched(LaunchActivatedEventArgs e)
{
[...]
    // Get a reference to the SQLite database
    DBPath = Path.Combine(
        Windows.Storage.ApplicationData.Current.LocalFolder.Path, "Subjects.s3db");
    // Initialize the database if necessary
    using (var db = new SQLite.SQLiteConnection(DBPath))
    {
        // Create the tables if they don't exist
        db.CreateTable<Subject>();
    }
[...]
}

当我启动它时,我在db.CreateTable()之后得到以下错误;执行:

无法添加PRIMARY KEY列。

这里出了什么问题?我真的很感激你的帮助。

非常感谢。

问候,FunkyPeanut

3 个答案:

答案 0 :(得分:10)

我相信这种情况正在发生,因为您通过添加或删除Subject类中的字段来更改数据库表的架构。即在运行应用程序以创建Id表后,您已添加Subject属性。

这就是为什么它适用于新的DB文件。您需要修改架构(在SQLite中需要创建新表,从现有表复制数据,删除现有表然后重命名新表),或者只是删除旧的DB文件并创建新的之一。

答案 1 :(得分:2)

我有同样的问题......这太愚蠢但是因为当我从另一张桌子复制/粘贴代码时我忘了改名......

[Table("CopiedTable")]

[Table("MyNewTable")]

答案 2 :(得分:0)

我有同样的问题。 做Build / Clean为我排序了问题。