J'écris une petite application qui traite beaucoup de flux. Je veux utiliser LINQ EF pour cela car la vitesse n'est pas un problème, c'est une application utilisateur unique et, à la fin, ne sera utilisée qu'une fois par mois. Mes questions tournent autour de la meilleure façon de faire des insertions en vrac en utilisant LINQ EF.Insertion groupée et mise à jour avec ADO.NET Entity Framework
Après l'analyse du flux de données entrant, je me retrouve avec une liste de valeurs. Puisque l'utilisateur final peut finir par essayer d'importer des données en double, je voudrais "nettoyer" les données pendant l'insertion plutôt que lire tous les enregistrements, faire une boucle for, rejeter les enregistrements, puis enfin importer le reste.
C'est ce que je fais actuellement:
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();
}
Je suis aussi obtenir cette erreur:
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"
Qu'est-ce que je fais mal?
Les pointeurs sont les bienvenus.
Fonctionne comme un champion! Comme ce sont des tables d'importation, je n'ai pas mis de PK sur eux. Maintenant que j'ai, et rafraîchi mon modèle, plus d'erreur! Merci. –