我有以下模式:操作涉及外键插入单元测试阶段时引起问题
create table statuslookup
{
statusid int primary key,
statusname string unique,
description string
}
create table job
{
jobid int primary key,
jobname string unique,
status_id foreign key reference statuslookup(statusid)
}
表statuslookup
,当然,要在模式设置中,这样以后我们,当我们创建一个条目预填充在表job
中,我们可以参考它并且不会获得外键错误。为表job
添加一个条目,我们只需要使用一个简单的insert command
:
job = new job();
job.jobname="mytest";
job.status_id=2;
到目前为止好..它在生产环境下工作!
唯一的问题是在单元测试阶段。我测试数据访问层,在测试开始时,数据库将被清除并重新填充初始数据。但问题是每次重新填充时,statusid
和jobid
都会增加。所以在单元测试中,不能像以前那样插入,因为statusid
一直在变化。
我在考虑改变我的insert statement
,以便它对单元测试更友好..任何想法?
编辑:这应该是一个数据库/ ORM不可知论问题。因为我使用SQL服务器,MYSQL,MS Access和Propel,NHibernate等。所以我想要可以应用于每种情况的通用解决方案。
编辑2:插入标识字段值似乎不起作用。因为当你填充一个表格(通过ORM)时,你不能指定标识字段值,至少Propel不会允许。
在我的场景中,我无法插入到身份字段中。举例来说,在推进中,当您填充表格时,您无法指定标识字段值。 – Graviton 2009-05-05 03:03:06