0

重複の可能性:
すでに使用されているキーを持つエンティティを追加できません(LINQ)

私はこの問題についてたくさんグーグルで検索し、同じ問題に直面している多くの人々を見つけました。しかし、まだそれを乗り越えることができました。多くの解決策が投稿されましたが、利益はありませんでした。

約38個のレコードを取得するLINQクエリを作成し、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();
                        };

しかし、最後の行ですでに使用されているキー、つまりSubmitChangesを持つエンティティを追加できませんというエラーが表示されます。

解決策の1つで、追加するコードの行を見つけましたRefreshModeが、これでは問題を解決できませんでした。

4

1 に答える 1

1

列の主キーを削除する必要があると思います。新しい列、つまりSerialNoを作成し、IdentitySpecificationを使用して主キーとして設定します。

同じ問題が発生しました。つまり、すでに使用されているキーを持つエンティティを追加できませんが、値を挿入していた列の主キーを削除し、主キーとID仕様を使用して新しい列を作成しました。問題が解決しました

于 2013-01-30T04:43:20.143 に答える