Linq, insérer une ligne avec une clé primaire auto générée

Résolu
oo7jb5 Messages postés 45 Date d'inscription jeudi 8 mars 2007 Statut Membre Dernière intervention 3 mars 2010 - 25 avril 2008 à 10:21
oo7jb5 Messages postés 45 Date d'inscription jeudi 8 mars 2007 Statut Membre Dernière intervention 3 mars 2010 - 6 mars 2009 à 18:17
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

oo7jb5 Messages postés 45 Date d'inscription jeudi 8 mars 2007 Statut Membre Dernière intervention 3 mars 2010
29 mai 2008 à 08:51
J'ai trouvé la solution à mon problème, il fallait utiliser New Guid() pour pouvoir avoir un identifiant unique.
3
cs_tizguine Messages postés 25 Date d'inscription lundi 29 octobre 2007 Statut Membre Dernière intervention 16 décembre 2009
6 mars 2009 à 10:49
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
0
cs_tizguine Messages postés 25 Date d'inscription lundi 29 octobre 2007 Statut Membre Dernière intervention 16 décembre 2009
6 mars 2009 à 13:35
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.....
0
oo7jb5 Messages postés 45 Date d'inscription jeudi 8 mars 2007 Statut Membre Dernière intervention 3 mars 2010
6 mars 2009 à 18:17
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.
0
Rejoignez-nous