内容目录
问题起因
使用Entity Framework Code First生成数据库。
完美成功,但是发现少写了一个字段。
删除数据库重新生成。
![](https://i-blog.csdnimg.cn/blog_migrate/b9a0494a1b8cabf73dafc878b120ad39.jpeg)
当再次生成时产生了错误。如下图:
![](https://i-blog.csdnimg.cn/blog_migrate/65408acd20e7777f31239b0b95662e81.jpeg)
Cannot attach the file as database 异常。
我的MM呀!这是啥情况,赶快度娘,搜狗,一顿SAO操作。
写的啥了,根本看不懂(或许没搜到点子上)。
那咋办?问题总是要解决呀,自己动手丰衣足食吧!
这无非就两个地方的:程序配置和数据库。
第一次是生成成功的,说明不是配置的问题,那就去数据库找吧!
解决方案
使用你Web.config配置文件的defaultConnection字符串中的Data Source的值登录数据库,我是(LocalDb)/v11.0。(期间我还尝试过其他数据源登录比较,这里只展示结果,其他就不做赘述了。)所以我的登录如下图:
![](https://i-blog.csdnimg.cn/blog_migrate/8135e16a59138910c892128cb4b3a708.jpeg)
登录成功后,发现我已经删除的BookDb竟然还存在。
![](https://i-blog.csdnimg.cn/blog_migrate/0ea64f4ef6338359401f34a9ee853037.jpeg)
不管“三七二十八”,选中删除。
![](https://i-blog.csdnimg.cn/blog_migrate/c2e89ffaed444fa4255b9bcee8418d68.jpeg)
“找不到指定文件”不用管它,关闭(这时候如果断开数据源重新连接,数据库就不存在了)。
运行项目,问题完美解决数据库生成成功!
注意:不同的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
结束!