我正在編寫一個處理大量數據的小應用程序。我想用LINQ EF做這件事,因爲速度不是問題,它是一個單用戶應用程序,最終只能每月使用一次。使用ADO.NET實體框架批量插入和更新
我的問題圍繞着使用LINQ EF進行批量插入的最佳方式。
解析傳入的數據流後,我得到一個值列表。由於最終用戶可能最終嘗試導入一些重複數據,因此我希望在插入期間「清理」數據,而不是讀取所有記錄,執行for循環,拒絕記錄,然後最後導入餘數。
這是我目前在做什麼:
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();
}
我也收到此錯誤:
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"
我在做什麼錯?
歡迎任何指針。
就像一個冠軍!由於這些是進口表,我沒有對他們進行PK。現在我擁有了,並且刷新了我的模型,沒有更多的錯誤!謝謝。 – 2010-04-06 22:13:59