많은 피드 처리를 수행하는 작은 응용 프로그램을 작성하고 있습니다. 속도가 문제가 아니므로 LINQ EF를 사용하고 싶습니다. 단일 사용자 응용 프로그램이므로 결국 한 달에 한 번만 사용됩니다.ADO.NET Entity Framework로 대량 삽입 및 업데이트
내 질문은 LINQ EF를 사용하여 대량 삽입을 수행하는 가장 좋은 방법을 중심으로 이루어집니다.
들어오는 데이터 스트림을 구문 분석 한 후에는 값 목록으로 끝납니다. 최종 사용자가 일부 중복 데이터를 가져 오기 때문에 결국 모든 레코드를 읽지 않고 for 루프를 수행하고 레코드를 거부 한 다음 나머지를 마지막으로 가져 오는 대신 삽입하는 동안 데이터를 "정리"하고 싶습니다.
System.Data.UpdateException was unhandled
Message="Unable to update the EntitySet 'ImportDoorAccess' because it has a DefiningQuery and no element exists in the element to support the current operation."
Source="System.Data.SqlServerCe.Entity"
내가 잘못 뭐하는 거지 :
는DateTime minDate = dataTransferObject.Min(c => c.DoorOpen);
DateTime maxDate = dataTransferObject.Max(c => c.DoorOpen);
using (LabUseEntities myEntities = new LabUseEntities())
{
var recCheck = myEntities.ImportDoorAccess.Where(a => a.DoorOpen >= minDate && a.DoorOpen <= maxDate).ToList();
if (recCheck.Count > 0)
{
foreach (ImportDoorAccess ida in recCheck)
{
DoorAudit da = dataTransferObject.Where(a => a.DoorOpen == ida.DoorOpen && a.CardNumber == ida.CardNumber).First();
if (da != null)
da.DoInsert = false;
}
}
ImportDoorAccess newIDA;
foreach (DoorAudit newDoorAudit in dataTransferObject)
{
if (newDoorAudit.DoInsert)
{
newIDA = new ImportDoorAccess
{
CardNumber = newDoorAudit.CardNumber,
Door = newDoorAudit.Door,
DoorOpen = newDoorAudit.DoorOpen,
Imported = newDoorAudit.Imported,
RawData = newDoorAudit.RawData,
UserName = newDoorAudit.UserName
};
myEntities.AddToImportDoorAccess(newIDA);
}
}
myEntities.SaveChanges();
}
나는이 오류가 무엇입니까 :
이것은 내가 현재 무엇을하고 무엇인가?
모든 안내를 환영합니다.
챔피언처럼 작동합니다! 이 테이블은 가져 오기 테이블이므로 PK를 넣지 않았습니다. 이제 나는 내 모델을 되찾았고, 더 이상 오류가 없다! 감사. –