Hi, I have recently developed a C# application using Linq. I am
getting from an external database a list of profiles I need to
process, some are new and some are already in the database, and need
to be updated. What I do today is go over the profile list and check
each profile if such exists I update otherwise I insert - this
solution is working fine.

I am sure there is a way to use bulk insert/update something like
UPDATE ON DUPLICATE, this way I can save time since the files I get
are huge and bulk insert/update is known to have better performance. I
would like to avoid the iteration I am now using.

insertall doesn't work for already stored rows, I need the combination
of both update and insert

Here is my code, Your help is highly appreciated.

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();

Reply via email to