Je rencontre le problème exact tel que décrit ici (lisez la section "Impossible de joindre le fichier supprimé MDF"), mais la solution au problème n’y est pas indiquée ...
En bref, le problème est qu’après la suppression du fichier .mdf
, l’exception suivante est levée lorsque j’essaie d’accéder à la base de données à l’aide de EF 5.0.
DataException-> EntityException-> SqlException:
Impossible de joindre le fichier '{0}' en tant que base de données '{1}'
J'ai supprimé le fichier de base de données et maintenant je reçois ce message d'erreur désagréable lors de l'exécution de l'application, qui s'attend à ce qu'il utilise son initializer .
Si vous supprimez le fichier de base de données, il reste enregistré auprès de SqlLocalDB. Parfois, il le corrige pour supprimer la base de données. Vous pouvez le faire depuis la ligne de commande.
Exécutez les commandes suivantes:
sqllocaldb.exe stop v11.0
sqllocaldb.exe delete v11.0
Pour ceux qui cherchent encore une solution ...
Accédez à Explorateur d'objets View/SQL Server et supprimez la base de données du sous-noeud (localdb)\v11.0!
Il existe essentiellement une base de données locale conservée indiquant l'emplacement des fichiers. Si vous souhaitez supprimer les fichiers de la base de données, veillez à les supprimer de cet utilitaire Explorer, et non manuellement.
J'ai d'abord essayé la solution de JSobell, mais ma base de données n'y était pas répertoriée. J'ai exécuté les commandes de CodingWithSpike à partir de l'invite de commande de VS Developer, mais cela n'a pas fonctionné non plus. Enfin, j'ai exécuté les mêmes commandes de CodingWithSpike à partir de la console de gestion de package et cela a fonctionné.
PM> sqllocaldb.exe stop v11.0
LocalDB instance "v11.0" stopped.
PM>
PM> sqllocaldb.exe delete v11.0
LocalDB instance "v11.0" deleted.
PM> sqllocaldb.exe start v11.0
LocalDB instance "v11.0" started.
Bien.
Ma solution était simple, j'ai changé pour utiliser un serveur local:
J'ai changé l'attribut DataSource
dans la chaîne de connexion à partir de:
Data Source=(LocalDb)\v11.0;blah
À:
Data Source=.\SQLEXPRESS;blah
Une autre solution consiste à vous connecter à LocalDb via SQL Management Studio et essayez de supprimer cette base de données:
Toutefois, cela n’a pas fonctionné pour moi. Lorsque je tente de le supprimer, il indique "TITLE: Microsoft SQL Server Management Studio
La base de données '{0}' n'existe pas sur le serveur. (SqlManagerUI)
Lorsque j'essaie de la détacher, la base de données n'apparaît pas dans la liste pour la sélection de la détachement. "Déconnecter" m'emporte également à l'erreur ci-dessus.
Ce qui me porte à penser que c'est un bug solide dans LocalDB.
La solution la plus simple consiste simplement à modifier le nom de votre base de données dans la chaîne de connexion. Voir le blog de Rowan Millers Comment supprimer une base de données de Visual Studio 2012 pour d'autres solutions. Nous espérons résoudre ce problème dans une prochaine édition.
La meilleure et facile réponse que je viens de résoudre maintenant, Il suffit d’utiliser le nom de votre serveur SQL comme source de données, le catalogue initial étant votre nom de base de données et vous supprimez la ligne mdf
Pour SQL 2014, veuillez suivre la réponse choisie par CodingWithSpike et ce commentaire.
En remarque, la version 11.0 est spécifique à SQL LocalDB 2012. Si vous êtes À l'aide de LocalDB 2014, MS l'a renommé MSSqlLocalDb . – CodingWithSpike 29 août 14 à 19:20
Dans mon cas, j’utilise les migrations et dans la configuration, j’ai simplement changé le nom de dataContext et la classe dataContext elle-même (il suffit de renommer), puis réessayez et cela a aidé
J'ai eu le même problème. J'ai exécuté les commandes suivantes dans la console du gestionnaire de paquets et résolu le problème
sqllocaldb.exe stop MSSqlLocalDb
sqllocaldb.exe delete MSSqlLocalDb
J'ai eu le même problème et je l'ai résolu en définissant manuellement le dossier "DataDirectory" dans un autre dossier dans les fichiers binaires de mon application.
Je mets cette ligne dans la méthode Global.asax Application_Start:
AppDomain.CurrentDomain.SetData("DataDirectory", Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "App_Data"));
Ma chaîne de connexion est actuellement définie sur ceci:
<connectionStrings>
<add name="DataContext" connectionString="Data Source=(LocalDb)\v11.0; Initial Catalog=DataContext; Integrated Security=True; MultipleActiveResultSets=True; AttachDbFilename=|DataDirectory|DataContext.mdf"
providerName="System.Data.SqlClient" />
Je pourrais le réparer en renommant le nom de la base de données dans ma chaîne de connexion, du nom par défaut aspnet- {nombres} à un nom simple, cela fonctionnait.
Connectez-vous à (LocalDb)\v11.0 à l'aide de Sql Server Management Studio, supprimez la base de données, puis créez une base de données de mise à jour dans la console du gestionnaire de packages.