Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.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# 在C中,SQLite随机抛出;约束失败\r\n列。。。“不是唯一的”;_C#_Sqlite - Fatal编程技术网

C# 在C中,SQLite随机抛出;约束失败\r\n列。。。“不是唯一的”;

C# 在C中,SQLite随机抛出;约束失败\r\n列。。。“不是唯一的”;,c#,sqlite,C#,Sqlite,我在C#中使用EntityObjects,我的后端是SQLite。系统信息: Windows XP (up-to-date), VS2010 Premium, System.Data.SQLite 1.0.88.0 (3.7.17) 表架构为: CREATE TABLE [transaction] ( [primary_key_col] integer PRIMARY KEY AUTOINCREMENT, [transaction_code] int NOT NULL, [ac

我在C#中使用EntityObjects,我的后端是SQLite。系统信息:

Windows XP (up-to-date), VS2010 Premium, System.Data.SQLite 1.0.88.0 (3.7.17)
表架构为:

CREATE TABLE [transaction] (
  [primary_key_col] integer PRIMARY KEY AUTOINCREMENT, 
  [transaction_code] int NOT NULL, 
  [account_code] int NOT NULL, 
  [category_code] int NOT NULL,
  [transaction_date] date NOT NULL,
  [description] varchar(50));
公共部分类事务:EntityObject
表示此表

要添加新事务,我调用以下代码:

Transaction transaction = new Transaction()
{
    description = _desc,
    transaction_code = generateHash(_desc),
    account_code = _acccode,
    category_code = _catcode,
    transaction_date = DateTime.Now
};

dbEntities.Transactions.AddObject(transaction);

dbEntities.SaveChanges(System.Data.Objects.SaveOptions.AcceptAllChangesAfterSave);
工作正常,但添加几行后,我得到以下异常:

Constraint failed\r\nColumn account_code is not unique.
如果我退出应用程序并重新启动它,这个错误会消失,但随后会再次随机出现

我知道帐户代码不是唯一的,我从来没有要求它是唯一的


应用程序只有3种特定的方法可以创建事务,并且该异常是从这些方法中任意抛出的。这与SQLite有关吗?(我是SQLite的新手)。知道为什么会这样吗?我几乎把头发都拔出来了…

根据评论,这似乎起到了作用:


您是在每次插入时使用“新”dbEntities上下文,还是在多次插入时使用相同的dbEntities上下文?这两种方式都不重要,但如果您当前正在使用后者,我会尝试前者。

当您重新启动应用程序时-下一次插入是否成功插入了与之前失败的完全相同的“帐户代码”?嗨,Rob,是的!我可以插入与失败事务完全相同的事务。您是在每次插入时使用“新”dbEntities上下文,还是在多次插入时使用相同的dbEntities上下文?这两种方法都不重要,但如果您目前正在使用后者,我会尝试前者。@Rob,这似乎解决了问题。运行查询时,使用现有连接似乎可以正常工作,但插入或删除似乎需要新连接,否则会出现间歇性行为。@Rob,请发布一个答案,以便我对其进行标记。我正在使用新的dbEntities来插入/删除,但重新使用现有连接来运行其他查询。但是,我发现我需要在现有连接上运行[使用StoreWins]刷新,这不一定是个问题,因为查询比插入/删除多得多。