title: Entity Framework Error: An object with a null EntityKey value cannot be attached to an object context
body: <p>In my application I have the following code...</p>
  
  <pre><code>    public Boolean SaveUserInformation(UserInfoDTO UserInformation)
      {
          return dataManager.SaveUserInfo(new UserInfo()
          {
              UserInfoID = UserInformation.UserInfoID.HasValue ? UserInformation.UserInfoID.Value : 0,
              UserID = UserInformation.UserID,
              ProxyUsername = UserInformation.ProxyUsername,
              Email = UserInformation.Email,
              Status = UserInformation.Status
          });
      }
  </code></pre>
  
  <p>This code calls a method on a dataManager object that utilizes Entity Framework...</p>
  
  <pre><code>    public Boolean SaveUserInfo(UserInfo userInfo)
      {
          try
          {
              //Validate data prior to database update
              if (userInfo.UserID == null) { throw new Exception("UserInfoDomainModel object passed to PriorityOne.Data.DataManager.SaveUserInfo with UserID property set to NULL."); }
              if (userInfo.ProxyUsername == null) { throw new Exception("UserInfoDomainModel object passed to PriorityOne.Data.DataManager.SaveUserInfo with ProxyUsername property set to NULL."); }
              if (userInfo.Email == null) { throw new Exception("UserInfoDomainModel object passed to PriorityOne.Data.DataManager.SaveUserInfo with Email property set to NULL."); }
  
              if (userInfo.UserInfoID == 0)
              {
                  //Perform Insert
                  using (PriorityOneEntities entities = new PriorityOneEntities())
                  {
                      entities.UserInfoes.AddObject(userInfo);
                      entities.SaveChanges();
                  }
              }
              else
              {
                  //Perform Update
                  using (PriorityOneEntities entities = new PriorityOneEntities())
                  {
                      entities.Attach(userInfo);
                      entities.SaveChanges();
                  }
              }
  
              return true;
          }
          catch (Exception ex)
          {
              //TODO: Log Error
              return false;
          }
  
      }
  </code></pre>
  
  <p>The insert on this code works just fine.  But when I try to perform an update I'm getting an error saying: "An object with a null EntityKey value cannot be attached to an object context."</p>
  
  <p>It occurs on this line of code: entities.Attach(userInfo);</p>
  
  <p>What I'm trying to accomplish is to avoid making a round trip to the database just to select the record that I will later make changes to and update, thus making two round trips to the database.</p>
  
  <p>Any ideas what is going wrong, or how I could better accomplish this?</p>
  
  <p>Thanks.</p>