我从Access表导入。该表是Category表,例如: - 长度 - 地区......等等。
来自访问的那个表还有一个ID字段,有时可以是1,2,3,4,5,或者有时是1,3,4,5 ......任何组合。
我需要将这些值插入到服务器表中我自己的ID字段中。因此我尝试使用身份插入。使用此代码:
using (var transaction = new TransactionScope())
{
dbContext.ExecuteCommand("TRUNCATE TABLE tbl_unitCat");
dbContext.ExecuteCommand("SET IDENTITY_INSERT tbl_unitCat ON");
foreach (DataRow row in table.Rows)//Rows coming from Access
{
tbl_unitCat currDBObj = new tbl_unitCat();
dbContext.tbl_unitCat.InsertOnSubmit(currDBObj);
//UnitCatID is the identity field
currDBObj.UnitCatID = row.ItemArray[0].ToInteger();
currDBObj.UnitCategory = row.ItemArray[1].ToString();
currDBObj.rawmat = (bool)row.ItemArray[2];
currDBObj.purchparts = (bool)row.ItemArray[3];
}
dbContext.SubmitChanges();
dbContext.ExecuteCommand("SET IDENTITY_INSERT tbl_unitCat OFF");
transaction.Complete();
}
失败并出现此错误: 必须为'中的标识列指定显式值。 tbl_unitCat'当IDENTITY_INSERT设置为ON或复制用户插入NOT FOR REPLICATION标识列时表。
我使用的服务器是2005年。 看看SO类似的帖子,我发现了这个MSDN Link
但这对我没有帮助。
有什么建议吗?