我在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的新手)。知道为什么会这样吗?我几乎拔掉了所有的头发......
答案 0 :(得分:1)
根据评论,似乎已经成功了:
每次进行插入时是使用“新”dbEntities上下文,还是在多次插入时重复使用相同的上下文?无论哪种方式都无关紧要,但如果您目前正在使用后者,我会尝试前者。