Hallo,
ich habe eine Anwendung, die mittels EntityFramework eine SQL-Datenbank anspricht.
Im Context gibt es eine Entität, die byte[] speichert. Ab und zu kommt es vor, dass Einträge dupliziert werden sollen, was sich als relativ langsam herausstellt.
Folgender Code wird dazu beispielhaft ausgeführt:
public void CopyToNewPerson(CustomContext ctx, int oldPersonId, int newPersonId)
{
foreach(var image in ctx.Set<Image>().Where(w=>w.PersonId=oldPersonId))
{
ctx.Set<Image>().Add(new Image{
PersonId=newPersonId,
Name=image.Name,
Bytes=image.Bytes
});
}
ctx.saveChanges();
}
Die Größe eines byte[] beträgt etwas zwischen 1-3MB.
Werden nun viele oder auch größere Einträge kopiert, so verlängert sich die Ausführungszeit, sodass der Vorgang insgesamt länger als erhofft dauert.
Gibt es eine Möglichkeit dies etwas eleganter zu lösen? Die erste Alternative, die mir einfällt wäre in dem Context ein SQL-Command abzusetzen.
ctx.Database.ExecuteSqlCommand("insert into...where...",oldPersonId,newPersonId)
Für jeden Vorschlag bin ich dankbar.
Gruß
Jogibaer0411