Ich möchte eine Reihe eingehender Datensätze durchlaufen, überprüfen Sie meine Datenbank, um zu sehen, ob sie bereits vorhanden sind, und fügen Sie sie hinzu oder aktualisieren Sie sie entsprechend. Ich habe wenig Erfolg.Entity Framework - Update oder Hinzufügen
var listOfClientAccounts = model.MTAccounts.ToList(); // single DB query
// for each of the users MTManager
foreach (var user in users)
{
var clientInDb = listOfClientAccounts
.SingleOrDefault(c => c.Login == user.Login); // runs in memory
var processedUser = ProcessUserRecord(user);
//Check if the Account Login is already in the database
if (clientInDb != null)
{
processedUser.MTAccountId = clientInDb.MTAccountId;
var entry = model.Entry(processedUser);
model.Entry(processedUser).CurrentValues.SetValues(processedUser);
entry.State = EntityState.Modified;
Console.WriteLine(x + " : UPDATE : " + processedUser.Login + "(" + clientInDb.MTAccountId + ")");
}
else
{
// Client does not exist add now
model.MTAccounts.Add(processedUser);
Console.WriteLine(x + " : ADD :" + processedUser.Login);
}
}
model.SaveChanges();
public MTAccount ProcessUserRecord(UserRecord user)
{
MTAccount DALUser = new MTAccount
{
BrokerServerId = 1,
Login = user.Login,
Group = user.Group
};
return DALUser;
}
Entscheidend ist, dass ich die savechanges rufen bis zum Ende der Schleife halten wollen, wie es zu nennen Hunderte von Datensätzen sein, und ich möchte nicht Hunderte von db Anrufe tätigen.
es Fehler ist wie folgt:
Mitglied ‚CurrentValues‘ kann nicht für die Entität des Typs ‚MTAccount‘ genannt werden, da das Unternehmen nicht im Zusammenhang existiert. Um eine Entität zum Kontext hinzuzufügen, rufen Sie die Methode Add oder Attach von DbSet auf.
und was ist das Problem in Ihrem Code? –
Mit wie Sie dies strukturiert haben, ist es egal, wo SaveChanges aufgerufen wird, Sie werden immer noch Hunderte von Anrufen machen. Sie müssen Batch-Einfügung/Aktualisierung, die nicht nativ in EF verfügbar ist und Erweiterungsbibliotheken benötigt –
Was ist Ihr Modell? Sicher, du nimmst einfach das Modell und fügst entweder eine neue Entität hinzu oder editierst die passende Entität, bevor du 'SaveChanges()' nennst - Was machst du? Was ist das Problem? – RemarkLima