我有以下架构:
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不允许这样做。
答案 0 :(得分:0)
您的数据库是否支持插入标识字段?这是最明显的答案(在单元测试中用已知ID填充状态表)。