今天我开始处理数据库。我已经安装了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
答案 0 :(得分:10)
我相信这种情况正在发生,因为您通过添加或删除Subject
类中的字段来更改数据库表的架构。即在运行应用程序以创建Id
表后,您已添加Subject
属性。
这就是为什么它适用于新的DB文件。您需要修改架构(在SQLite中需要创建新表,从现有表复制数据,删除现有表然后重命名新表),或者只是删除旧的DB文件并创建新的之一。
答案 1 :(得分:2)
我有同样的问题......这太愚蠢但是因为当我从另一张桌子复制/粘贴代码时我忘了改名......
在
[Table("CopiedTable")]
在
[Table("MyNewTable")]
答案 2 :(得分:0)
我有同样的问题。 做Build / Clean为我排序了问题。