我在 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 的新手)。知道为什么会这样吗?我几乎把头发都拔光了...