Estou encontrando o problema exato, conforme descrito aqui (leia a seção "Não é possível anexar ao arquivo MDF excluído"), mas a solução para o problema não é informada lá ...
Em resumo, o problema é que, após a exclusão do .mdf
arquivo, a seguinte exceção é lançada quando tento acessar o banco de dados usando o EF 5.0.
DataException-> EntityException-> SqlException:
Não é possível anexar o arquivo '{0}' como banco de dados '{1}'
Excluí o arquivo DB e agora recebo essa mensagem de erro desagradável ao executar o aplicativo, esperando que ele use o inicializador. Algum jeito de arrumar isso?
sql-server
asp.net-mvc
visual-studio-2012
entity-framework-5
localdb
Shimmy Weitzhandler
fonte
fonte
Respostas:
Se você excluir o arquivo DB, ele ainda permanecerá registrado no SqlLocalDB. Às vezes, ele corrige a exclusão do banco de dados. Você pode fazer isso na linha de comando.
Execute os seguintes comandos:
sqllocaldb.exe stop v11.0
sqllocaldb.exe delete v11.0
fonte
v11.0
é específico ao SQL LocalDB 2012. Se você estiver usando o LocalDB 2014, a MS o renomeouMSSqlLocalDb
.Para quem ainda procura uma solução ...
Vá para View / SQL Server Object Explorer e exclua o banco de dados do subnó (localdb) \ v11.0!
Existe essencialmente um banco de dados local onde os arquivos devem estar e, se você deseja excluir os arquivos do banco de dados, remova-os deste utilitário do explorer, não manualmente.
fonte
Tentei a solução do JSobell primeiro, mas não vi meu banco de dados listado lá. Executei os comandos do CodingWithSpike no VS Developer Command Prompt, mas isso também não funcionou. Finalmente, executei os mesmos comandos do CodingWithSpike no Package Manager Console e funcionou.
fonte
Tudo bem.
Minha solução foi simples, mudei para usar o servidor local:
Alterei o
DataSource
atributo na cadeia de conexão de:Para:
Outra solução é fazer login no LocalDb via SQL Management Studio e tentar excluir esse banco de dados:
No entanto, não funcionou para mim, quando tento excluí-lo, diz "TITLE: Microsoft SQL Server Management Studio
Quando tento desanexá-lo, o banco de dados não aparece na lista para desanexar a seleção. "Colocar offline" também leva ao erro acima.
O que me leva a pensar que este é um bug sólido no LocalDB.
fonte
A correção mais fácil é simplesmente alterar o nome do seu banco de dados na cadeia de conexão. Consulte o blog Rowan Millers Como descartar um banco de dados do Visual Studio 2012 para obter soluções alternativas. Esperamos corrigir esse problema em uma edição futura.
fonte
A melhor e mais fácil solução que acabei de resolver agora: basta usar o nome do servidor sql como fonte de dados, o catálogo inicial como o nome do banco de dados e remover a linha mdf
fonte
No meu caso, eu uso migrações e na configuração simplesmente mudei o nome da classe dataContext e dataContext (apenas renomeie) e tente novamente e isso ajudou
fonte
Para o SQL 2014, siga a resposta selecionada CodingWithSpike e este comentário
fonte
v11.0
paraProjectsV12
. Pelo menos na minha máquina :-).Eu tive o mesmo problema e o resolvi definindo manualmente a pasta "DataDirectory" para outra pasta nos binários do meu aplicativo.
Coloquei esta linha no método Global.asax Application_Start:
Minha cadeia de conexão está atualmente definida como esta:
fonte
DataDirectory
já está definido como localApp_Data
por padrão, portanto, a menos que seja explicitamente alterado antes, seu código não fará nada.Eu poderia corrigi-lo renomeando o nome do DataBase na minha conexão String, do padrão aspnet- {numbers} para um nome simples, funcionou.
fonte
Conecte-se a (LocalDb) \ v11.0 usando o Sql server management studio, exclua o banco de dados e faça um banco de dados de atualização no console do gerenciador de pacotes.
fonte
Eu tive o mesmo problema. Executei os seguintes comandos no console do gerenciador de pacotes e ele corrigiu o problema
fonte