Για το θέμα της τιμής που δίνει -1, -2 κλπ. μπορείς να σετάρεις τις παραμέτρους των insert και upate commands χωρίς το id κάπως έτσι:
insertCommand.CommandText = @"INSERT INTO Employee(lastName, firstName) VALUES(@lastName, @firstName, )";
insertCommand.Connection = _sqlCon; // SqlConnection objecct
insertCommand.Parameters.Add("@lastName", SqlDbType.VarChar, 30, "lastName");
insertCommand.Parameters.Add("@firstName", SqlDbType.VarChar, 30, "firstName");
// ...
da.InsertCommand = insertCommand;
da.Fill(ds, "Contact");
Και έπειτα σε μια public method:
public void Insert(string firstName, string lastName)
{
insertCommand.Parameters["@firstName"].Value = firstName;
insertCommand.Parameters["@lastName"].Value = lastName;
insertCommand.ExecuteNonQuery();
}
Το id δε χρειάζεται να γίνει set, γίνεται αυτόματα ανάθεση στην τιμή του, εφόσον είναι auto-increment.