可能的重复项:
无法添加具有已在使用的键的实体 (LINQ)
我在谷歌上搜索了很多关于这个问题的信息,发现很多人都面临同样的问题。 但还可以通过它。 发布了许多解决方案,但没有收获。
我编写了一个 LINQ 查询,该查询检索了大约 38 条记录,并使用 foreach 循环将这些记录按照代码插入到其他表中。
var Results = (from p in (from d in compact.CURRENT_STATUS
where QtrEndDate >= d.ValidStartDate && QtrEndDate <= d.ValidDueDate && d.LocationCode == EmployeeLocation && d.DeptCode == selecteddept
select new
{
loccode = d.LocationCode,
taskcode = d.TaskCode,
deptcode = d.DeptCode,
flag = d.Flag,
startdate = d.ValidStartDate,
duedate = d.ValidDueDate,
remarks = d.Remarks,
content = d.UploadDocContent,
title = d.UploadDocTitle,
type = d.UploadDocType
}).Union(from i in compact.HISTORY_STATUS
where QtrEndDate >= i.ValidStartDate && QtrEndDate <= i.ValidEndDate && i.LocationCode == EmployeeLocation && i.DeptCode == selecteddept
select new
{
loccode = i.LocationCode,
taskcode = i.TaskCode,
deptcode = i.DeptCode,
flag = i.Flag,
startdate = i.ValidStartDate,
duedate = i.ValidEndDate.Date,
remarks = i.Remarks,
content = i.UploadDocContent,
title = i.UploadDocTitle,
type = i.UploadDocType
}) select p);
foreach (var item in Results)
{
REPORT_TABLE RT = new REPORT_TABLE();
{
RT.LocationCode = item.loccode;
RT.TaskCode = item.taskcode;
RT.DeptCode = item.deptcode;
RT.Flag = item.flag;
RT.ValidStartDate = item.startdate;
RT.ValidDueDate = item.duedate;
RT.Remarks = item.remarks;
RT.UploadDocContent = item.content;
RT.UploadDocTitle = item.title;
RT.UploadDocType = item.type;
RT.SubmittedBy = (Session["username"]).ToString();
RT.SubmittedByIP = (Session["IP"]).ToString();
RT.SubmittedOn = System.DateTime.Now;
RT.ReportID = RHqueryFind.ReportID;
RT.AsOnDate = QtrEndDate;
}
compact.REPORT_TABLEs.InsertOnSubmit(RT);
compact.SubmitChanges();
};
但我确实收到错误"无法添加具有最后一行中已使用的键的实体,即提交更改"。
在其中一个解决方案中,我找到了一行代码作为RefreshMode
添加,但这无法解决我的问题。
我认为您必须删除列的主键。创建新列,即序列号,并将其设置为具有身份规范的主键。
我遇到了同样的问题,即无法添加具有已在使用的键的实体,但是当我删除插入值的列的主键并使用主键和身份规范创建一个新列时。问题已解决