Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# SQLite&引用;无法添加主键列"-例外情况_C#_Sql - Fatal编程技术网

C# SQLite&引用;无法添加主键列"-例外情况

C# SQLite&引用;无法添加主键列"-例外情况,c#,sql,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事件包含: protected ove

今天我开始处理数据库。我已经安装了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事件包含:

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>();
    }
[...]
}
protectedoverride void OnLaunched(启动ActivatedEventargs e)
{
[...]
//获取对SQLite数据库的引用
DBPath=Path.Combine(
Windows.Storage.ApplicationData.Current.LocalFolder.Path,“Subjects.s3db”);
//如有必要,初始化数据库
使用(var db=new SQLite.SQLiteConnection(DBPath))
{
//如果表不存在,则创建它们
db.CreateTable();
}
[...]
}
当我启动它时,在db.CreateTable()之后出现以下错误:;已执行:

无法添加主键列

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

多谢各位


您好,Funkypeant

我相信这是因为您通过在
主题
类中添加或删除字段更改了DB表的模式。也就是说,您已经在运行应用程序以创建
主题
表之后添加了
Id
属性

这就是为什么它与一个新的DB文件一起工作。您要么需要修改模式(在SQLite中涉及创建新表、从现有表复制数据、删除现有表然后重命名新表),要么只需删除旧的DB文件并创建一个新文件。

我也有同样的问题。
进行构建/清理为我解决了问题。

我也遇到了同样的问题。。。这太愚蠢了,但这是因为当我从另一个表复制/粘贴代码时,我忘了更改它的名称

以前

[Table("CopiedTable")]
之后


不确定,但您不是在尝试创建一个已经存在的表吗?嘿,谢谢您的快速评论。我不确定,但我认为“CreateTable”表达式只会在不存在的情况下创建一个表。隐马尔可夫模型。。。。谢谢你!你最好检查一下。设置一个没有任何表的测试数据库,看看会发生什么。嗯,你似乎是对的。当我将数据库名称更改为Subject.s3db时,即使我重新启动或完全重新启动应用程序,一切都正常!谢谢你!哇!但这仍然留下了一个更大的问题——为什么?我觉得这很奇怪。理解这个错误将有助于我将来避免它。非常感谢你,伙计!:)
[Table("MyNewTable")]