Después de de nuestra extensa compilación de información dimos con la respuesta esta obstáculo que presentan algunos de nuestros lectores. Te dejamos la respuesta y esperamos servirte de gran ayuda.
Solución:
Descargo de responsabilidad: Soy el dueño del proyecto Entity Framework Plus
Nuestra biblioteca tiene una función de actualización por lotes que creo que es lo que está buscando
Esta función es compatible con EF Core
// Is there anything like? YES!!!
context.TimeEntries
.Where(te => timeEntryIds.Contains(te.Id))
.Update(te => new TimeEntry() InvoiceId = invoice.Id );
Wiki: Actualización por lotes de EF
EDITAR: Responder comentario
¿Admite contiene como en tu ejemplo? Creo que esto proviene de EF Core, que no es una función compatible con la versión 3.1 incluso
La compatibilidad con EF Core 3.x contiene: https://dotnetfiddle.net/DAdIO2
Si TimeEntry
tiene una asociación para Invoice
(verifique las propiedades de navegación), probablemente pueda hacer algo como esto:
var timeEntries = context.TimeEntries.Where(t => timeEntryIds.Contains(te.Id)).ToArray();
foreach(var timeEntry in timeEntries)
invoice.TimeEntries.Add(timeEntry);
context.Invoices.Add(invoice);
//save the entire context and takes care of the ids
context.SaveChanges();
¿Está buscando el rendimiento de la sintaxis simplificada?
Sugeriría usar una consulta SQL directa,
string query = "Update TimeEntries Set InvoiceId = Where Id in (comma separated ids)";
context.Database.ExecuteSqlCommandAsync(query);
Para identificaciones separadas por comas que puede hacer string.Join(',', timeEntryIds)
Depende de lo que realmente necesites. Si desea usar Linq, debe iterar a través de cada objeto.
Recuerda que puedes mostrar este enunciado si si solucionó tu problema.