J'ai récemment développé une application C# en utilisant Linq. Je reçois d'une base de données externe une liste de profils que je dois traiter, certains sont nouveaux et d'autres sont déjà dans la base de données, et doivent être mis à jour. Ce que je fais aujourd'hui est de passer en revue la liste des profils et de vérifier chaque profil si tel est le cas. Je le mets à jour sinon je l'insère - cette solution fonctionne très bien. Je suis sûr qu'il existe un moyen d'utiliser l'insertion/mise à jour en vrac quelque chose comme UPDATE ON DUPLICATE, de cette façon je peux gagner du temps car les fichiers sont énormes et l'insertion/mise à jour en masse est connue pour avoir de meilleures performances. Je voudrais éviter l'itération que j'utilise maintenant.Visual studio C# Linq bulk insert/mise à jour
insertall ne fonctionne pas pour les lignes déjà stockées, je besoin de la combinaison des deux mise à jour et insérer
Voici mon code, votre aide est très appréciée.
foreach (Profile tmpProfile in profiles)
{
try
{
var matchedProfile = (from c in db.ProfileEntities
where c.ProfileId == tmpProfile.Id
select c).SingleOrDefault();
if (matchedProfile == null)
{
//Insert
db.ProfileEntities.InsertOnSubmit(EntityMapper.ToEntity(tmpProfile));
}
else
{
//Update
EntityMapper.ToEntity(ref matchedProfile, tmpProfile);
}
}
catch (System.Data.SqlServerCe.SqlCeException sqlExec)
{
}
catch (Exception e)
{
}
}
db.SubmitChanges();
Cela signifie que je vais devoir parcourir la liste des éléments à déterminer qui sont situés dans la base de données et mettre à jour un par un , pensez-vous que c'est mieux? – user149318
Salut à tous L'impact sur les performances d'un grand succès sur la base de données, et de l'itération sur celle-ci, devrait être moindre que de faire de nombreux petits appels à la base de données. Vous devriez donc avoir une optimisation nette. – Joon
Comment faire une telle optimisation? Je suis conscient du fait que le bulk est préférable mais existe-t-il un moyen de le faire en utilisant LINQ? en termes d'insertion et de mise à jour dans une opération en bloc. – user149318