À L'Aide De SQLAdapter.Mise à jour(Dataset) Déclenche une erreur “Pas de clé primaire dans la commande select”

En bref, C# me lance "génération SQL Dynamique pour le UpdateCommand n'est pas prise en charge sur une SelectCommand qui ne renvoie pas les informations de colonne de clé", tandis que le tableau en question N'ont une clé Primaire (Identité, puisque c'est MSSQL).

Mon code est comme suit:

       void loaddata()
    {
        try
        {
            DS = new DataSet();
            sqladapt = new SqlDataAdapter("SELECT servicetag,name,defect,primkey FROM " + Properties.Settings.Default.DBtableLaptops + "", sqlcon);
            sqladapt.FillSchema(DS, SchemaType.Source);
            sqladapt.Fill(DS);
            commandBuilder = new SqlCommandBuilder(sqladapt);
            DT = DS.Tables[0];
            Laptops_datagridview.DataSource = DT; //I'm using a datagridview to edit the data.
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }

    }
    void savedata()
    {
        //Doesn't work yet.
        try
        {
            sqladapt.Update(DS); //<-- Throws the aforementioned error.
            sqladapt.Dispose();
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }
    }

De chargement de données etc fonctionne très bien, l'Ajout de nouvelles lignes fonctionne ainsi, et il le sauve. Mais à chaque fois que je mettre à jour ou supprimer une ligne, il génère l'erreur.
Primkey est ma clé primaire, c'est une auto-incrémentation entier.

J'ai cherché sur google tous les jours, mais en vain, le problème habituel de gens ont, c'est qu'il n'y a pas de clé primaire définie dans la première place, mais ce n'est pas le cas ici.

Toute entrée serait grandement apprécié, j'ai été fusil de chasse de débogage pour comme 6 heures maintenant.

EDIT:
Les instructions de création de la table en question est comme suit:

CREATE TABLE [dbo].[laptopregistratieDB_laptops](
    [Servicetag] [text] NOT NULL,
    [Name] [text] NOT NULL,
    [Defect] [bit] NOT NULL,
    [primkey] [int] IDENTITY(1,1) NOT NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
Est PrimKey en fait, une clé primaire? L'IDENTITÉ et la Clé Primaire sont deux concepts distincts. Pourriez-vous le script de la table de Gestion de Studio et de post CREATE TABLE/instructions ALTER TABLE?
Je n'étais pas au courant, c'était différent, j'ai l'habitude de MySQL, et quand j'ai essayé de créer une base de données de MSSQL il ne fonctionne pas, après quelques recherches sur google j'ai trouvé que j'doivent utiliser 'identificateur' à la place..

OriginalL'auteur Alex | 2011-03-10