Cannot attach the file ‘**’ as database ‘**’ 图形界面解决方案
内容目录
问题起因
使用Entity Framework Code First生成数据库。
完美成功,但是发现少写了一个字段。
删除数据库重新生成。

当再次生成时产生了错误。如下图:

Cannot attach the file as database 异常。
我的MM呀!这是啥情况,赶快度娘,搜狗,一顿SAO操作。
写的啥了,根本看不懂(或许没搜到点子上)。
那咋办?问题总是要解决呀,自己动手丰衣足食吧!
这无非就两个地方的:程序配置和数据库。
第一次是生成成功的,说明不是配置的问题,那就去数据库找吧!
解决方案
使用你Web.config配置文件的defaultConnection字符串中的Data Source的值登录数据库,我是(LocalDb)/v11.0。(期间我还尝试过其他数据源登录比较,这里只展示结果,其他就不做赘述了。)所以我的登录如下图:

登录成功后,发现我已经删除的BookDb竟然还存在。

不管“三七二十八”,选中删除。

“找不到指定文件”不用管它,关闭(这时候如果断开数据源重新连接,数据库就不存在了)。
运行项目,问题完美解决数据库生成成功!
注意:不同的EntityFramework版本有可能生成的配置节点不同
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework">
<parameters>
<parameter value="Data Source=(LocalDb)\v11.0; Initial Catalog=BookDb; Integrated Security=True; Connect Timeout=120; MultipleActiveResultSets=True; AttachDBFilename=|DataDirectory|\BookDb.mdf" />
</parameters>
</defaultConnectionFactory>
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>
</entityFramework>
以上代码段Data Source写的很清楚用(LocalDb)\v11.0登录数据库。
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
<parameters>
<parameter value="mssqllocaldb" />
</parameters>
</defaultConnectionFactory>
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>
</entityFramework>
这个代码段则需要使用(LocalDb)\MSSQLLocalDB登录查看。
总结
问题就这样解决了,鉴于我没在网上找到合适的答案,写篇博客,希望可以帮助到后来者。就当我再写博客的时候发现,竟然有大神写过命令行解决方案。都怪自己没仔细找呀,要不也不用自己这么半天的尝试了。大神是命令行解决方案,我的就叫图形用户界面解决方案吧!嘿嘿……
这里贴一下大神的解决方案链接吧,希望对后来有问题的人可以有所帮助。
请参考此博文:http://www.cnblogs.com/lori/p/5206687.html
结束!

浙公网安备 33010602011771号