Linq, insérer une ligne avec une clé primaire auto générée [Résolu]

Signaler
Messages postés
45
Date d'inscription
jeudi 8 mars 2007
Statut
Membre
Dernière intervention
3 mars 2010
-
Messages postés
45
Date d'inscription
jeudi 8 mars 2007
Statut
Membre
Dernière intervention
3 mars 2010
-
Bonjour,

Je
travaille avec VS2008 et Linq et je souhaiterais insérer une ligne dans
ma table ISAMEMBEROF, la clé primaire (IMO_ID) étant générée
automatiquement. Voici le code que j'ai déjà réalisé :

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Dim msg1 As Integer = USRDataGridView.CurrentCell.RowIndex
        Dim msg2 As Integer = GROUPDataGridView.CurrentCell.RowIndex

        ' Create a new object.
        Dim ord As New ISAMEMBEROF With _
        {.USR_SID = USRDataGridView.Rows(msg1).Cells(0).Value, _
         .GRP_GID = USRDataGridView.Rows(msg2).Cells(0).Value, _
         .IMO_ID = ???}

        ' Add the new object to the collection.
        Me.Db.ISAMEMBEROFs.InsertOnSubmit(ord)

        ' Submit the change to the database.
        Try
            Db.SubmitChanges()
        Catch except As Exception
            Console.WriteLine(except)
            Db.SubmitChanges()
        End Try
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

L'équivalent SQL serait :
insert into ISAMEMBEROF (IMO_ID, USR_SID, GRP_GID) values (default, ..........)

Comment faire pour obtenir cet équivalent en VB.NET/Linq ?

Merci d'avance !

<hr align="left" size="1" width="25%" />Etienne

4 réponses

Messages postés
45
Date d'inscription
jeudi 8 mars 2007
Statut
Membre
Dernière intervention
3 mars 2010

J'ai trouvé la solution à mon problème, il fallait utiliser New Guid() pour pouvoir avoir un identifiant unique.
Messages postés
25
Date d'inscription
lundi 29 octobre 2007
Statut
Membre
Dernière intervention
16 décembre 2009

tizguine:


Bonjour,

je travaille sous vb2008 express et j'aimerai inserer des données dans une base de donnée avec le linq mais j'y arrive pas !!  j'ai vu ke tu l'a pu faire avec new guid() mais je vois pas comment..

voilà la partie du code qui devrait permettre l'insertion:
Dim db As New ImportCSVDataContext ("c:\...")
                    Dim ass As New personneKey With { _
                    .id = 3
                    .nom = Legrand, _
                    .prenom = David, _
                     }
                     db.personneKey.InsertOnSubmit(ass)
                    db.SubmitChanges()

ma table est personneKey
merci d'avance
Messages postés
25
Date d'inscription
lundi 29 octobre 2007
Statut
Membre
Dernière intervention
16 décembre 2009

suite à ma question je signale que l'erreur que j'ai apres l'exe de mon code est:












"system.data.sqlclient.sqlException:Impossible d'insérer une valeur explicite dans la colone identité de la table quand IDENTITY_INSERT est definit à OFF.....
Messages postés
45
Date d'inscription
jeudi 8 mars 2007
Statut
Membre
Dernière intervention
3 mars 2010

Salut,

Je ne me rappelle plus très bien de la syntaxe car nous avons par la suite changé de procédé mais il me semble bien que cela ressemblait à la syntaxe suivante : Guid.NewGuid().
Donc dans ton cas, je pense qu'il faudrait que tu utilises : "  .id = Guid.NewGuid()   ". Voila en espérant que cela règle ton problème.