none
Comment continuer un INSERT après une erreur SaveChanges() dans Entity Framework (en VB Net)

    Question

  • Bonjour,

    Visual Studio 2017

    Entity Framework 6

    VB Net 4.6

    Mon problème est le suivant: je fais un INSERT dans ma base de données. J'ai créé un liaison Entity. La Table contient une contrainte sur une clef Date. Je désire faire une INSERT, mais que lorsque db.SaveChange() rencontre une clée identique, il n'en tienne pas compte et continue.

    J'ai essayé ça, mais le code s'arrête dès la première violation de contrainte:

    ' **** INSERT Table Stock
            ' *** db est le dbContext
            For Each cpt As K_RESS In compteurs
                If cpt.RES_STOCK = 2 Then
    
                    Dim RSK As New K_STOCK
                    RSK.RSK_UNITE = cpt.RES_UNITE
                    RSK.RSK_CODE = cpt.RES_CODE
                    RSK.RSK_DATE = cpy.RES_Date ' *** date
                    db.TB_COM_RESS_STOCK.Add(RSK)
                End If
            Next
            Try
                ' **** en cas d'erreur d'INSERT...il faudrait que SaveChange() continue....
                db.SaveChanges()
            Catch generatedExceptionName As OptimisticConcurrencyException
                Dim ctxSTK = (CType(db, IObjectContextAdapter)).ObjectContext
                ctxSTK.Refresh(RefreshMode.ClientWins, compteurs)
                ctxSTK.SaveChanges()
            Catch ex As Exception
                ' **** erreur
                MsgBox("Erreur {0}", ex.ToString)
            End Try

    mardi 16 janvier 2018 18:08

Toutes les réponses