title: linq and auto increment
body: <p>Error:</p>
  
  <blockquote>
    <p>An unhandled exception of type 'System.Data.SqlClient.SqlException'
    occurred in System.Data.Linq.dll
         Additional information: Violation of PRIMARY KEY constraint 'PK_users'. Cannot insert duplicate key in object 'dbo.users'. The
    duplicate key value is (0).
         The statement has been terminated.</p>
  </blockquote>
  
  <p>Code:</p>
  
  <pre><code>private void register_Click(object sender, RoutedEventArgs e)
  {
      var _user = new user();
      if (username.Text.Length == 0)
      {
          username.Text = "Geef gebruikersnaam in";
      }
      else if (password.Text.Length == 0)
      {
          password.Text = "Voer wachtwoord in";
      }
      else if (password.Text != passcon.Text)
      {
          password.Text = "Wachtwoorden niet gelijk";
      }
      else
      {
          using (MD5 md5Hash = MD5.Create())
          {
              _user.password = md5Hash.ComputeHash(Encoding.UTF8.GetBytes(password.Text));
          }
          _user.username = username.Text;
  
          bool contactExists = _dataDC.users.Any(x =&gt; x.username.Equals(_user.username));
          if (contactExists)
          {
              MessageBox.Show("Gebruiker bestaat al");
          }
          else
          {
              _dataDC.users.InsertOnSubmit(_user);
              _dataDC.SubmitChanges();
  
              MessageBox.Show("Registratie succesvol");
              MainWindow _main = new MainWindow();
              _main.Show();
              this.Close();
          }
      }
  }
  </code></pre>
  
  <p>I'm using SQL Server Manager. The primary key in my table is 'ID'. Auto increment is enabled. I'm not setting the id anywhere, so it's technicaly null, yet i get this error. Any solutions?</p>
  
  <p>Edit: modelclass:</p>
  
  <pre><code>public user user
          {
              get
              {
                  return this._user.Entity;
              }
              set
              {
                  user previousValue = this._user.Entity;
                  if (((previousValue != value) 
                              || (this._user.HasLoadedOrAssignedValue == false)))
                  {
                      this.SendPropertyChanging();
                      if ((previousValue != null))
                      {
                          this._user.Entity = null;
                          previousValue.recipients.Remove(this);
                      }
                      this._user.Entity = value;
                      if ((value != null))
                      {
                          value.recipients.Add(this);
                          this._recipient1 = value.username;
                      }
                      else
                      {
                          this._recipient1 = default(string);
                      }
                      this.SendPropertyChanged("user");
                  }
              }
          }
  </code></pre>
  
  <p>And the Propertychanged:</p>
  
  <pre><code>public partial class user : INotifyPropertyChanging, INotifyPropertyChanged
      {
  
          private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
  
          private int _userid;
  
          private string _username;
  
          private System.Data.Linq.Binary _password;
  
          private EntitySet&lt;email&gt; _emails;
  
          private EntitySet&lt;recipient&gt; _recipients;
  
      #region Extensibility Method Definitions
      partial void OnLoaded();
      partial void OnValidate(System.Data.Linq.ChangeAction action);
      partial void OnCreated();
      partial void OnuseridChanging(int value);
      partial void OnuseridChanged();
      partial void OnusernameChanging(string value);
      partial void OnusernameChanged();
      partial void OnpasswordChanging(System.Data.Linq.Binary value);
      partial void OnpasswordChanged();
      #endregion
  
          public user()
          {
              this._emails = new EntitySet&lt;email&gt;(new Action&lt;email&gt;(this.attach_emails), new Action&lt;email&gt;(this.detach_emails));
              this._recipients = new EntitySet&lt;recipient&gt;(new Action&lt;recipient&gt;(this.attach_recipients), new Action&lt;recipient&gt;(this.detach_recipients));
              OnCreated();
          }
  
          [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_userid", DbType="Int NOT NULL", IsPrimaryKey=true, IsDbGenerated=true)]
          public int userid
          {
              get
              {
                  return this._userid;
              }
              set
              {
                  if ((this._userid != value))
                  {
                      this.OnuseridChanging(value);
                      this.SendPropertyChanging();
                      this._userid = value;
                      this.SendPropertyChanged("userid");
                      this.OnuseridChanged();
                  }
              }
          }
  
          [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_username", DbType="VarChar(50) NOT NULL", CanBeNull=false)]
          public string username
          {
              get
              {
                  return this._username;
              }
              set
              {
                  if ((this._username != value))
                  {
                      this.OnusernameChanging(value);
                      this.SendPropertyChanging();
                      this._username = value;
                      this.SendPropertyChanged("username");
                      this.OnusernameChanged();
                  }
              }
          }
  
          [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_password", DbType="VarBinary(MAX) NOT NULL", CanBeNull=false, UpdateCheck=UpdateCheck.Never)]
          public System.Data.Linq.Binary password
          {
              get
              {
                  return this._password;
              }
              set
              {
                  if ((this._password != value))
                  {
                      this.OnpasswordChanging(value);
                      this.SendPropertyChanging();
                      this._password = value;
                      this.SendPropertyChanged("password");
                      this.OnpasswordChanged();
                  }
              }
          }
  </code></pre>