2008-10-10 5 views
1

Si j'ai le code Linq suivant:Index de Linq Erreur

context.Table1s.InsertOnSubmit(t); 
context.Table1s.InsertOnSubmit(t2); 
context.Table1s.InsertOnSubmit(t3); 

context.SubmitChanges(); 

Et je reçois une erreur de base de données en raison de la 2ème insert, Linq lève une exception qu'il y avait une erreur. Mais, y a-t-il un moyen de découvrir que c'était le 2ème insert qui avait le problème et pas le 1er ou le 3ème? Pour clarifier, il y a des raisons d'affaires que je m'attendrais à ce que le 2ème échoue (j'utilise une procédure stockée pour faire l'insertion et je fais aussi une certaine validation et une erreur si elle échoue). Je veux pouvoir dire à l'utilisateur lequel a échoué et pourquoi. Je sais que cette validation serait mieux faite dans le code C# et non dans la base de données, mais ce n'est actuellement pas une option.

+0

Quel type d'erreur? quel genre d'exception? Comment savez-vous que c'est le deuxième article? –

Répondre

1

Vous pouvez spécifier explicitement un mode de conflit comme celui-ci:

context.SubmitChanges(ConflictMode.ContinueOnConflict); 

si vous souhaitez insérer ce qui est valable et ne manquera pas le premier conflit, puis utilisez le

context.ChangeConflicts 

collection découvrez quels objets sont en conflit lors de l'insertion.

1

Commentez les première et troisième insertions pour les éliminer en tant que suspects. Ma première pensée est que la deuxième insertion a le même ID que le premier, mais il est difficile de diagnostiquer votre problème sans plus de détails sur l'erreur.

+0

Voir mes commentaires ci-dessus. Je provoque l'échec de l'insertion dans le SP basé sur une logique conditionnelle. Je veux juste savoir lequel échoue. – NotDan