Digamos que tengo una tabla simple que sólo contiene dos columnas:¿Cómo actualizo una tabla con LINQ-to-SQL sin tener que eliminar todos los registros existentes?
MailingListUser
- PK ID (int)
- FK ID de usuario (int)
tengo un método llamado UpdateMailList(IEnumerable
.<int
> userIDs)
¿Cómo hago, en LINQ, hacer inserciones para los ID de usuario que están presentes en el parámetro pasado pero no existen en la base de datos, eliminar los que están en la base de datos pero ya no en los ID de usuario, y dejar el unos que ya están en los db y los ID de usuario solos?
A un usuario se le presenta una lista de casillas de verificación y, cuando se carga por primera vez, se seleccionan los miembros existentes seleccionados para la lista maillista.
El usuario puede marcar y desmarcar varios usuarios y presionar "guardar". Una vez que esto sucede, necesito actualizar el estado de la base de datos con el estado de la lista de verificación.
Aquí es lo que estoy haciendo ahora:
public void UpdateMailList(IEnumerable<int> userIDs)
{
using (MainDataContext db = new MainDataContext())
{
var existingUsers = (from a in db.MailListUsers
select a);
db.MailListUsers.DeleteAllOnSubmit(existingUsers);
db.SubmitChanges();
var newUsers = (from n in userIDs
select new MailListUser
{
UserID = n
});
db.MailListUsers.InsertAllOnSubmit(newUsers);
db.SubmitChanges();
}
}
}
}
¿Hay una manera mejor que simplemente borrando todas las entradas en la tabla MailingListUser, y volver a insertar todos los valores de ID de usuario?