Estoy tratando de crear una consulta para el marco de la entidad que me permitirá tomar una lista de identificadores y actualizar un campo asociado con ellos.
Ejemplo en SQL:
UPDATE Friends
SET msgSentBy = '1234'
WHERE id IN (1, 2, 3, 4)
¿Cómo convierto lo anterior en un marco de entidad?
c#
sql
asp.net-mvc
entity-framework
sql-update
allencoded
fuente
fuente
Friend
electrónicos coincidentes de la base de datos y actualizar su propiedadmsgSentBy
y guardar los cambios. Pero EF dispararáUPDATE
declaraciones para cada registro individual. Eso no es en absoluto lo mismo que una actualización masiva de una declaración. Como se dijo, busque una biblioteca de terceros que ofrezca actualizaciones masivas.Respuestas:
algo como abajo
var idList=new int[]{1, 2, 3, 4}; using (var db=new SomeDatabaseContext()) { var friends= db.Friends.Where(f=>idList.Contains(f.ID)).ToList(); friends.ForEach(a=>a.msgSentBy='1234'); db.SaveChanges(); }
ACTUALIZAR:
puede actualizar varios campos como se muestra a continuación
friends.ForEach(a => { a.property1 = value1; a.property2 = value2; });
fuente
ForEach
es un método activadoList
, y generalmente no se recomienda su uso porque no es una forma de programación muy funcional. Simplemente useforeach
(el operador) como una persona normal.UPDATE SomeTable SET SomeField = SomeValue WHERE Id IN (...)
)var idList=new int[]{1, 2, 3, 4}; var friendsToUpdate = await Context.Friends.Where(f => idList.Contains(f.Id).ToListAsync(); foreach(var item in previousEReceipts) { item.msgSentBy = "1234"; }
Puede usar foreach para actualizar cada elemento que cumpla con su condición.
Aquí hay un ejemplo de una manera más genérica:
var itemsToUpdate = await Context.friends.Where(f => f.Id == <someCondition>).ToListAsync(); foreach(var item in itemsToUpdate) { item.property = updatedValue; } Context.SaveChanges()
En general, lo más probable es que utilice métodos asincrónicos con await for db queries.
fuente