2008-09-26 4 views
4

J'ai fait une classe de LINQ to SQL Clasees avec VS 2008 SP1 Framework 3.5 SP1, dans ce cas, je tendis laComment coder les extensions partielles que Linq to SQL génère automatiquement?

partial void UpdateMyTable(MyTable instance){ 
    // Business logic 
    // Validation rules, etc. 
} 

partielle Mon problème est quand j'exécute db.SubmitChanges(), il exécute UpdateMyTable et marques les validations, mais il ne met pas à jour, je reçois cette erreur:

[Exception: Deliver] 
    System.Data.Linq.ChangeProcessor.SendOnValidate(MetaType type, TrackedObject item, ChangeAction changeAction) +197 
    System.Data.Linq.ChangeProcessor.ValidateAll(IEnumerable`1 list) +255 
    System.Data.Linq.ChangeProcessor.SubmitChanges(ConflictMode failureMode) +76 
    System.Data.Linq.DataContext.SubmitChanges(ConflictMode failureMode) +331 
    System.Data.Linq.DataContext.SubmitChanges() +19 
+7

Actuellement, il existe une politique sur les questions non-anglaises: http://blog.stackoverflow.com/2009/07/non-english-question-policy/ –

Répondre

3
  • si vous fournissez cette méthode, vous devez effectuer la mise à jour dans la méthode.

http://msdn.microsoft.com/en-us/library/bb882671.aspx

  • Si vous implémentez l'Insertion, mise à jour et Supprimer méthodes dans votre classe partielle, LINQ à exécution SQL les appellera au lieu de ses propres méthodes par défaut lorsque SubmitChanges est appelé.

Essayez MiTabla.OnValidate

1

Si vous souhaitez implémenter cette méthode, mais pas faire la mise à jour vous-même vous faire l'appel de méthode ExecuteDynamicUpdate (point);

De même, ExecuteDynamicDelete et ExecuteDynamicInsert pour DeleteMyTable et InsertMyTable respectivement.