2009-09-20 8 views
2

Je crée et supprime des bases de données à la volée pour certains tests d'intégration. Je fais toute la gestion de la base de données au niveau ADO.NET. Pour les tests, j'utilise Entity Framework parce que les entités sont une partie de ce que je suis en train de tester. Le problème est que, après que je l'ai fait:Création d'une base de données avec ADO.NET (et EntityFramework)

using (ProjectEntities db = new ProjectEntities(cs)) { 
} 

Je ne peux plus supprimer la base de données. Il dit qu'il est utilisé. Comment puis-je le libérer afin qu'il puisse être supprimé?

j'ai eu le même problème au niveau de ADO.NET et ce que je faisais était:

new SqlCommand("USE [master]", DatabaseConnection).ExecuteNonQuery(); 

mais je ne suis pas sûr de savoir comment réaliser quelque chose avec le même effet pour la connexion Entity Framework. J'ai essayé de disposer manuellement l'objet db (bien que la clause using devrait le garantir) et j'ai également essayé de fermer manuellement le db.Connection. Aucun n'a aidé. Si je pouvais exécuter directement SQL sans la connexion Entity Framework, je crois que je serai en mesure de le faire. Ou peut-être y a-t-il un autre moyen?

Répondre

5

Vous devrez peut-être fermer explicitement toutes les connexions, je crois que la connexion est en cours de regroupement et c'est l'une des connexions regroupées qui maintient toujours une connexion active à la base de données. Essayez d'utiliser SqlConnection.ClearAllPools

J'ai blogué sur un problème similaire dans Entity Framework Object Context - AWAITING COMMAND.

Questions connexes