title: Best practice for removing Database calls from MVC Controller classes
body: <p>I have an Action method in an ASP.NET MVC Controller class that handles form posts from a fairly basic "create/edit a user" page. I'm new to MVC so I've been following code samples from various Microsoft tutorials, this is how the method looks currently:</p>
  
  <pre><code>[AcceptVerbs(HttpVerbs.Post)]
  public ViewResult Save([Bind(Prefix = "ServiceUser")]ServiceUser SUser)
  {
          if (SUser.ServiceUserId == 0) //new service user
              ServiceUserHelper.AddServiceUser(SUser);
          else //update to existing service user
          {
              using (ProjectDataContext db = DatabaseHelper.CreateContext())
              {
                  this.UpdateModel(db.ServiceUsers.Single(su =&gt; su.ServiceUserId == SUser.ServiceUserId), "ServiceUser");
                  db.SubmitChanges();
              }
          }
  
          //return a confirmation view
  }
  </code></pre>
  
  <p>This works fine; however my instincts tell me that the 'ProjectDataContext...' code doesn't belong in the controller. If I were to move the Update functionality to an other class (in the way I have done with the Insert method), I'd lose the convenience of the Controller's UpdateModel() method, and probably end up having to do something quite verbose to read the existing entity, update its properties, and submit the changes.</p>
  
  <p>So my question is, what is the best way to achieve this? Is there a method similar to UpdateModel() somewhere in LINQ that can merge two entities of the same type together before submitting?</p>
  
  <p>Thanks.</p>