IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Silverlight Discussion :

Error on SubmitChanges


Sujet :

Silverlight

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Août 2010
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 8
    Par défaut Error on SubmitChanges
    Bonjour à tous,

    J'ai suivi au poil le tutorial suivant :
    http://www.silverlight.net/learn/vid...ervices-intro/

    Config :
    Local :
    - Windows 7 64bits
    - VS2010
    - Silverlight 4
    Serveur:
    - Windows Serveur 2003
    - BDD sur SQL Server 2005

    Tout se passe bien jusqu'à la transaction des changements avec la base de données. Que ce soit un Update, un Insert ou un Delete au moment de l'exécution du code associé au boutton le navigateur me propose de lancer un débuggeur 'just à temps' alors que je suis déjà en mode débug et la transaction ne s'effectue pas.

    Event associé au bouton :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    private void SaveChangesButton_Click(object sender, RoutedEventArgs e)
            {
                if (myData.HasChanges)
                {
                    myData.SubmitChanges();
                }
            }
    Sachant que myData correspond à mon Grid qui lui s'update correctement pour le client avant le submit au serveur.

    Côté serveur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public void UpdateArticle(Article currentArticle)
            {
                this.ObjectContext.Articles.AttachAsModified(currentArticle, this.ChangeSet.GetOriginal(currentArticle));
            }

    La fenêtre du debuggeur juste à temps affiche ceci :
    Code : 4004
    Category : ManagedRuntimeError
    Message : System.ServiceModel.DomainServices.Client.DomainException


    Et voici le détail de l'erreur que j'obtiens lorsque j'exécute sans débugger (ctrl + f5) bien que je doute que ce soit très utile :


    à System.Windows.Controls.DomainDataSource.SubmitChanges_Callback(SubmitOperation submitOperation)
    à System.ServiceModel.DomainServices.Client.SubmitOperation.InvokeCompleteAction()
    à System.ServiceModel.DomainServices.Client.OperationBase.Complete(Exception error)
    à System.ServiceModel.DomainServices.Client.SubmitOperation.Complete(Exception error)
    à System.ServiceModel.DomainServices.Client.DomainContext.CompleteSubmitChanges(IAsyncResult asyncResult)
    à System.ServiceModel.DomainServices.Client.DomainContext.<>c__DisplayClassd.<SubmitChanges>b__5(Object )
    Caused by: And error occurred while submitting changes on the DomainContext of type 'SVDomainContext' and the error was not handled. You must handle the SubmittedChanges event on the DomainDataSource and call SubmittedChangesEventArgs.MarkErrorAsHandled() to avoid this exception.

    à System.Windows.Controls.DomainDataSource.SubmitChanges_Callback(SubmitOperation submitOperation)
    à System.ServiceModel.DomainServices.Client.SubmitOperation.InvokeCompleteAction()
    à System.ServiceModel.DomainServices.Client.OperationBase.Complete(Exception error)
    à System.ServiceModel.DomainServices.Client.SubmitOperation.Complete(Exception error)
    à System.ServiceModel.DomainServices.Client.DomainContext.CompleteSubmitChanges(IAsyncResult asyncResult)
    à System.ServiceModel.DomainServices.Client.DomainContext.<>c__DisplayClassd.<SubmitChanges>b__5(Object )

    Merci d'avance,
    Bsct

  2. #2
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Par défaut
    Tu as essayé de mettre un try/catch et de voir si l'exception te donnait un message ?

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Août 2010
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 8
    Par défaut
    Salut,

    alors après gestion de l'exception ça me donne :

    Submit operation failed. Impossible de mettre à jour l'EntitySet "Articles" parcequ'il comprend un DefiningQuery et qu'il n'existe dans l'élément <ModificationFunctionMapping> aucun élément <UpdateFunction> pour la prise en charge de l'opération actuelle.
    En espérant que ça soit plus clair maintenant... pour moi c'est toujours le bordel

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 103
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 103
    Par défaut
    toi tu as affecté des procédures stockées pour la gestion de la persistances des entités ? je me trompe ?

    si tu l'a fait pour les opérations de lecture, il faut le faire également pour l'insertion, la suppression, et la modification...
    si ce n'était pas voulu, vérifie que tu n'aurais pas mappé une procédure stockée pour ton entité Article, pour la lecture ou quelque opération que ce soit.

    en effet, ton message ressemble fort à un message que j'ai eu dans un cas de ce type. j'avais pas fait attention que j'avais affecté une procédure stockée...

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Août 2010
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 8
    Par défaut
    Je pense que j'ai plus qu'à aller me pendre...

    Et si je veux continuer à mapper je suis obligé de mapper des procédures pour l'update, le delete et l'insert alors?

    Merci en tout cas!

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 103
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 103
    Par défaut
    si tu mappe avec des stored proc, il faut le faire jusqu'au bout ou pas du tout, du moins dans EF 1 (enfin sur dotnet3.5SP1) je ne sais pas si ce petit péché de jeunesse a été "corrigé" sur EF4 (dotnet4)
    d'un autre coté c'est à la fois un inconvénient et un avantage, car tu peux mapper des entités qui n'ont pas d'existance réelle dans la base, en utilisant les procédures, d'où l'obligation d'utiliser les proc stoc pour tout ou rien.

    note que cela ne concerne que Article. Si tu bind Article sur une proc stoc, si tu as une entité Commande, et qu'elle n'est pas mappée à une proc stoc, alors elle n'est pas concernée.

    les règles de binding s'appliquent à chaque entité séparémment, et non sur l'ensemble.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Context SubmitChanges error
    Par biscotto dans le forum Silverlight
    Réponses: 5
    Dernier message: 25/08/2010, 16h58
  2. [SQL Server] Error converting data type varchar...
    Par Sir Tengu dans le forum MS SQL Server
    Réponses: 9
    Dernier message: 13/06/2003, 10h46
  3. [Kylix] Kylix c++ error
    Par pacpac dans le forum EDI
    Réponses: 2
    Dernier message: 10/06/2003, 16h27
  4. [CR] Print Engine error text
    Par afaraji dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 03/09/2002, 15h44
  5. [Kylix] Runtime error 230 avec INDY
    Par Anonymous dans le forum EDI
    Réponses: 2
    Dernier message: 23/03/2002, 11h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo