title: Row not found or changed LINQ C# error on simple statement
body: <p>First of all, there is no chance that this is a multi-user issue, as I'm working locally on a dev version of the database.</p>
  
  <p>I am getting the not very explanatory <code>Row not found or changed</code> error being thrown when I perform db.SubmitChanges(). If I break the execution just before the SubmitChanges() occurs, I can check in SQL Server Management Studio and the row <em>does</em> exist!</p>
  
  <p>Here's the code for the whole function, just to put it in context for anyone who wants to help, but the problem line is right at the end (line 48).</p>
  
  <p><strong>Update</strong> This is a really odd one: the error is caused by updating matchingTrans.Url (see penultimate line of code). Commenting out this line doesn't throw the error - even if the matchingTrans.Title still gets updated.</p>
  
  <pre><code>private static void MenuItemUpdate(int languageId, NavigationItem item)
  {
      using (var db = DataContextFactory.Create&lt;MyDataContext&gt;())
      {
          // Select existing menu item from database.
          var dbItem =
              (from i in db.MenuItems
               where i.Id == item.Id
               select i).Single();
          // Obtain ID of link type.
          dbItem.FkLinkTypeId = GetLinkTypeByName(
              Enum.GetName(typeof (NavigationItemLinkType), item.LinkType)).Id;
          // Update the Link field with what is given.
          dbItem.Link = item.Link;
          db.SubmitChanges();
  
          // Item already exists and needs editing.
          // Get associated translations.
          var trans =
              from t in db.MenuItemTranslations
              where t.FkMenuItemId == item.Id
              select t;
  
          // If translation exists for given language, edit it.
          var matchingTrans =
              (from t in trans
               where t.FkLanguageId == languageId
               select t).SingleOrDefault();
  
          if (matchingTrans == null)
          {
              // No matching translation - add one.
              var newDbTrans = new MenuItemTranslation
              {
                  FkMenuItemId = item.Id,
                  FkLanguageId = languageId,
                  Title = item.Title,
                  Url = item.FriendlyUrl
              };
              db.MenuItemTranslations.InsertOnSubmit(newDbTrans);
              db.SubmitChanges();
          }
          else
          {
              // Matching translation - edit it.
              matchingTrans.Title = item.Title;
              matchingTrans.Url = item.FriendlyUrl;
              db.SubmitChanges();
              // WTF ERROR: Row not found or changed.
          }
      }
  }
  </code></pre>