2013-11-24 42 views
4

今天我已經開始應對數據庫。我已經安裝了SQLite和SQLite-net。我正在使用C#編程Windows 8.1應用程序。SQLite; 「無法添加PRIMARY KEY列」-Exception

我所擁有的是以下幾點:

模型:

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

    public string Name { get; set; }  
} 

而且OnLaunched-事件在App.Xaml.cs包含:

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

不知道後,但不是你想創建一個已經存在的表? – 2013-11-24 16:57:35

+0

嘿,感謝您的快速評論。那麼我不知道,但我認爲「CreateTable」表達式只創建一個表,如果它不存在。嗯....謝謝雖然! – FunkyPeanut

+0

你最好檢查一下。建立一個沒有任何表的測試數據庫,看看發生了什麼。 – 2013-11-24 17:07:16

回答

7

我相信這一切,因爲你已經通過添加或從Subject類刪除場改變數據庫表的模式。即在已經運行應用程序以創建Subject表之後,您已添加Id屬性。

這就是爲什麼它使用新的DB文件。您可能需要修改模式(在SQLite中涉及創建新表,從現有表複製數據,刪除現有表,然後重命名新表),或者只需刪除舊數據庫文件並創建一個新數據庫。

0

我有同樣的問題。 做構建/清理爲我排序的問題。

0

我有同樣的問題......這是愚蠢,但它是因爲當我複製從另一個表,我忘了更改其名稱/粘貼代碼......

[Table("CopiedTable")] 
之前

[Table("MyNewTable")]