2010-12-07 66 views
8

J'ai juste essayé d'insérer de la valeur dans une base de données et ce travail. Maintenant, je insère à nouveau et je reçois une erreur pour la clé primaire identique.Impossible de définir l'incrémentation automatique via SQL Server Express Management Studio?

Je ne trouve aucune option pour le modifier pour qu'il soit auto-incrémenté. Je suis la mise à jour de la table via Linq-To-Sql

User u = new User(email.Text, HttpContext.Current.Request.UserHostAddress, 
             CalculateMD5Hash(password.Text)); 
db.Users.InsertOnSubmit(g); 
db.SubmitChanges(); 

Je n'ai pas rempli dans le user_id et il a bien fonctionné la première fois. C'est devenu zéro. Si vous tentez d'ajouter un deuxième utilisateur, il souhaite rétablir l'ID 0.

Je pourrais interroger la base de données et demander l'ID le plus élevé, mais cela ira loin si vous connaissez l'auto-incrémentation.

Comment puis-je activer cette option? Tout ce que je peux trouver sont des scripts pour la création de tables. J'aimerais conserver ma table existante et la modifier.

Répondre

20

Comment votre modèle Linq-to-SQL est-il défini? Vérifiez les propriétés de la colonne user_id - que sont-ils réglés sur ??

alt text

Dans votre modèle LINQ to SQL, assurez-vous d'avoir Auto Generated Value la valeur true, Auto-Sync ensemble à OnInsert, et le type de données du serveur doivent également correspondre à vos paramètres (INT IDENTITY),

Dans SQL Server Management Studio, vous devez définir la colonne user_id comme étant de type INT IDENTITY - dans le concepteur de table visuel, vous devez définir cette propriété ici:

alt text

+0

Merci, cela l'a fait. – KdgDev

1

Il est zéro car vous avez un entier pour un type de colonne de clé primaire. Pour utiliser l'auto-incrémentation, définissez la colonne d'identité des tables sur l'ID (sélectionné dans les propriétés du tableau)

0

Ou vous pouvez augmenter le user_id manuellement et le transmettre à la fonction d'insertion si vous ne pouvez pas modifier la propriété/table de description du champ