我在我的项目中使用EntityFramework.Extended库,其中包含代码第一个实体模型。 当我执行这个linq语句并从库中执行批量删除时,我收到错误消息“sequence包含多个元素”:
var subjLocal = (from subjectLocal in customerContext.RosterSummaryData_Subject_Local
where ((subjectLocal.fkRosterSetID == 0) &&
(statsInfo.TestInstanceIDsList.Contains(subjectLocal.fkTestInstanceID)) &&
(subjectLocal.fkTestTypeID == statsInfo.TestTypeID) &&
(statsInfo.SchoolYearIDsList.Contains(subjectLocal.fkSchoolYearID)) &&
(subjectLocal.fkRosterTypeID == 1) &&
(subjectLocal.fkSchoolID == 0) &&
(subjectLocal.fkDepartmentID == 1) &&
(subjectLocal.fkCourseID == 1) &&
(subjectLocal.fkPeriodID == 1) &&
(statsInfo.DemoCatIDsList.Contains(subjectLocal.fkDemoCommonCategoryID)) &&
(statsInfo.DemoCodeIDsList.Contains(subjectLocal.fkDemoCommonCodeID)) &&
(statsInfo.TestSubjectIDsList.Contains(subjectLocal.fkTest_SubjectID)))
select subjectLocal.pkSummarySubjectLocalID).ToArray();
if (subjLocal.Length > 0)
{
customerContext.RosterSummaryData_Subject_Local.Where(s => subjLocal.Contains(s.pkSummarySubjectLocalID)).Delete();
customerContext.RosterSummaryData_Subject_Local_Bands.Where(s => subjLocal.Contains(s.fkSummarySubjectLocalID)).Delete();
customerContext.RosterSummaryData_Subject_Local_Averages.Where(s => subjLocal.Contains(s.fkSummarySubjectLocalID)).Delete();
customerContext.SaveChanges();
}
错误发生在:
customerContext.RosterSummaryData_Subject_Local.Where(s => subjLocal.Contains(s.pkSummarySubjectLocalID)).Delete();
customerContext是我继承DBContext的基础实体,而RosterSummaryData_Subject_Local / _Bands / _Averages是子表。我正在使用using引用导入库,它注意到Delete()方法,所以这可以正常工作:
using EntityFramework.Extensions;
批量删除的目的不是确保您可以一次删除多个项目,而且序列不应包含多个元素吗?我在这里缺少什么吗?
答案 0 :(得分:1)
您可以在此处找到类似的帖子EntityFramework.Extensions 6.1 Batch Delete throws "Sequence contains more than one element"。
根据@deherech,它似乎是扩展框架中的一个错误