这是我的以下代码(以前的代码)。它应该在上下文对象中添加多个记录(我猜LINQ情况下的对象),然后提交给DB。问题是,现在只有一条记录正在向DB发送,当时有几条用于插入。
using (DeviceExerciseDataDataContext context = new DeviceExerciseDataDataContext())
{
foreach(UpdateData tgudData in data.UpdateData)
{
tgd.FK = 1;
tgd.Time = tgudData.TimeStamp;
tgd.Calories = Convert.ToInt32(tgudData.Calories);
tgd.HeartRate = tgudData.AvgHr;
tgd.BenchAngle = tgudData.Angle;
tgd.WorkoutTarget = 0;
tgd.Reps = tgudData.Reps;
context.Datas.InsertOnSubmit(tgd);
}
context.SubmitChanges();
}
现在,我尝试将context.SubmitChanges()
放入foreach块,这就是它给出的错误。
无法插入显式值 表中的标识列 IDENTITY_INSERT是'tablename' 设置为OFF。
请注意,我没有插入主键列,PK列设置为自动增量,并且是标识。
对我来说,为什么我的代码不再插入多个记录了?
答案 0 :(得分:3)
您只为tgd
使用单个类实例,因此只创建了一条记录 - 您只是重复覆盖现有tgd
实例的属性。相反,你必须在循环中新建tgd
,即:
foreach(UpdateData tgudData in data.UpdateData)
{
tgd = new WhateverTgdIs();
tgd.FK = 1;
tgd.Time = tgudData.TimeStamp;
tgd.Calories = Convert.ToInt32(tgudData.Calories);
tgd.HeartRate = tgudData.AvgHr;
tgd.BenchAngle = tgudData.Angle;
tgd.WorkoutTarget = 0;
tgd.Reps = tgudData.Reps;
context.Datas.InsertOnSubmit(tgd);
}