EF虽说对LocalDb支持的不错,但LocalDb有自身的缺陷(不想sqlite那样数据库文件可以像普通文件一样使用).
LocalDb在一个计算机上会对数据库有唯一性约束,要求本机的localdb不能重名.如果没有注意到这一点就会有以下问题:
Cannot attach the file ‘{0}' as database '{1}'
EF CodeFirst 指定不同数据库文件路径来新建同名的数据库时就会出现无法新建数据库(localDb)。
删除localdb的方法
不能仅仅删除文件,需要通过工具或者命令行来删除:
1.SqlServer management studio或者SqlServer Object Explorer:
Or
2.VS Developer Command Prompt
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.
更多细节查看:
https://stackoverflow.com/questions/13275054/ef5-cannot-attach-the-file-0-as-database-1
附加:
Download SQL Server 2012 Express
IIS7 配合 vs2013内置 LocalDB使用
错误提示:
在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误。未找到或无法访问服务器。请验证实例名称是否正确并且 SQL Server 已配置为允许远程连接。 (provider: SQL Network Interfaces, error: 50 - 发生了 Local Database Runtime 错误。Cannot create an automatic instance. See the Windows Application event log for error details.
)
在vs里调试运行都正常,放到IIS里就出现请求数据库失败的情况;
解决方法:
找到对应网站的应用程序池, 高级设置 里找到 标示 选择为LocalSystem就可以了.
遗憾的事,目前据我查询到的资料,Localdb在设计之初就不能配合iis使用,只能在开发环境中使用,不能在生产环境(IIS)中使用.