C# 当指定autoincrement时,SQLite允许主

C# 当指定autoincrement时,SQLite允许主,c#,.net,sqlite,castle-activerecord,nunit-2.5,C#,.net,Sqlite,Castle Activerecord,Nunit 2.5,我正在使用SQLite测试我的DAO项目。 原因是它提供了一种快速的方法来告诉我模型是否可以执行CRUD操作 因此,有一个NUNIT项目测试每个DAO并指示失败 但是,我遇到了这样一个问题:如果一个类的主对象标记为已分配,并且该表已启用自动增量,那么插入不会像在SQL Server中那样失败 下面是我用来在内存中创建SQLite表的语法 CREATE TABLE dbo.Control ([ControlNumber] INTEGER PRIMARY KEY AUTOINCREMENT NOT

我正在使用SQLite测试我的DAO项目。 原因是它提供了一种快速的方法来告诉我模型是否可以执行CRUD操作

因此,有一个NUNIT项目测试每个DAO并指示失败

但是,我遇到了这样一个问题:如果一个类的主对象标记为已分配,并且该表已启用自动增量,那么插入不会像在SQL Server中那样失败

下面是我用来在内存中创建SQLite表的语法

CREATE TABLE dbo.Control ([ControlNumber] INTEGER PRIMARY KEY AUTOINCREMENT  NOT NULL ,[ControlDescription] TEXT    NULL ,[ControlNumeric] REAL    NULL ,[ControlText] TEXT    NULL ,[ControlGroupKey] INTEGER    NULL )

我如何才能让insert失败,表明建模存在问题?

SQLite在存储数据方面比其他数据库宽容得多。我能想到的唯一一件事就是创建一个插入触发器,以某种方式使查询失败


据我所知,当为自动增量字段提供值时,DAO并没有规定数据库应该如何反应,这会使测试项目过于严格(或特定于SQL Server)。

谢谢您的建议。我同意DAO不应该规定DB应该如何反应,但在我们的设计中,我们将DAO对象放在表上,有点像表驱动的设计。目前,我们正处于一个改造项目的中间,那里有很多“桌子设计”正在进行。因此,我为我的SQL数据库生成一个表模式,并创建一个内存中的数据库和测试。如果我们的模型中有任何东西出现故障,这将提供30秒以下的回转。我知道这不是最好的方法,但目前它是什么,我们需要使它的工作,同时保持理智。