2008-12-16 8 views
1

J'utilise LINQ to SQl et en utilisant TransactionScopre j'insère les données dans SQL.L'utilisation de TransactionScope entraîne-t-elle la suppression des instructions, de nouveau la base de données?

_context.tblDataContainer.InsertOnSubmit(migrationData); 

using (TransactionScope ts = new TransactionScope()) 
{ 
    _context.SubmitChanges(); 
    ts.Complete(); 
} 

ce faisant, linq exécute toutes les instructions delete sur SQL. J'ai vérifié en utilisant le journal de contexte et aucune instruction de suppression n'est envoyée à la base de données, mais mon admin db dit que j'exécute certaines instructions delete dans cette transaction. Des vues à ce sujet?

Répondre

1

Nous aurions vraiment besoin d'en savoir plus sur votre schéma. Rappelez-vous que L2S est déclaratif - vous déclarez ce que vous voulez faire et non comment le faire. Il est tout à fait possible que le moteur L2S ait examiné votre base de données, trouvé un type de contrainte ou autre situation et décidé que le meilleur moyen d'insérer ces données en toute sécurité serait de supprimer d'abord un enregistrement. Bien que ce soit un étirement, cela pourrait arriver. Cependant, il existe d'autres possibilités, telles que les déclencheurs. Avez-vous vérifié que la table est en train de faire une insertion et de voir s'il y a des déclencheurs qui pourraient supprimer des données ailleurs?

+0

Il n'y a pas de déclencheur sur les tables, pas de jointure.Il s'agit d'une insertion simple.Je me demandais s'il y a un cas où une opération de suppression a lieu avant que la table fournie ne possède aucun déclencheur.Est-ce lié à la transaction coz sur la db , sous transaction, thr est une instruction delete et après cette instruction d'insertion – Kapil

Questions connexes