J'utilise EF depuis presque un an. Je viens d'essayer d'utiliser TransactionScope face à une requête assez complexe comme le code suivant.Pourquoi Entity Framework 4.0 nécessite-t-il l'utilisation de DTM? Est-il possible de ne pas l'utiliser?
using (var tran = new TransactionScope())
{
// Clear all data in some table
DataContext.SomeTables
.ForEach(x => DataContext.SomeTables.DeleteObject(x));
DataContext.SaveChanges();
// Import data from excel as DataSet object.
var ds = ImportDataFromExcel(file.FullName);
foreach (DataRow dr in ds.Tables[0].Rows)
{
DataContext.SomeTables.AddObject(new SomeTable
{
// fill object with data from current row.
});
}
DataContext.SaveChanges();
// Commit Transaction
tran.Complete();
}
Après cela, j'ai eu une erreur à propos de DTM n'est pas activé ou accessible. Je sais que cause par ce service au serveur de base de données n'est pas démarré ou bloqué par pare-feu. Mais ce n'est pas mon point.
Je veux savoir pourquoi EF utilise ce service pour créer une transaction alors que le script SQL simple ne peut utiliser que certaines instructions comme "BEGIN TRAN", "SAVE TRAN" ou "ROLLBACK TRAN".
Existe-t-il un autre moyen d'éviter d'appeler le service DTM pour ma déclaration de transaction assez simple?
PS. La base de données de travail actuelle est si petite et je pense qu'elle ne devrait pas être affectée par différentes techniques de transaction.
Merci,