title: How to update entities which are modified outside the DbContext?
body: <p>I've a small problem with updating entities if the entity is changed outside the DbContext (is a detached entity). If I attach the modified entity, it's state is not modified.</p>
  
  <p>My code looks like this:</p>
  
  <pre><code>var specificationToSave = GetSpecificationFromTmpStore(userSessionGuid);
  using (var context = DataContextFactory.GetDataContext())
  {
      // this works for update, if I change the values inside the context while debugging
      // but it breaks with new entities
      context.Specifications.Attach(specificationToSave);
  
      // this works for insert new entities, modified entities will be saved as new entities
      context.Specifications.Add((specificationToSave);)
      context.SaveChanges();
  }
  </code></pre>
  
  <p>I know NHibernate and it's method SaveOrUpdate. NHibernate decides because of the values if it is updating or inserting the entities. </p>
  
  <p>What is the best practice to do this with EF 4.x and with entities which are modified outside the DbContext? 
  How can I tell the EF that this entity is in modified state?</p>