0

我在 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));

public partial class Transaction : 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.

如果我退出应用程序并重新启动它,此错误就会消失,但随后又会随机出现。

我知道 account_code 不是唯一的,我从来没有要求它是唯一的!!!

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

4

1 回答 1

1

根据似乎已经成功的评论:

您是在每次执行插入时都使用“新”dbEntities 上下文,还是对多次插入重复使用相同的上下文?无论哪种方式都无关紧要,但如果您目前使用的是后者,我会尝试前者。

于 2013-10-24T12:15:25.507 回答