Project relocated to different pc - can't create database
已将我的 MVC4/EF5 应用程序放在另一台机器上,现在想要生成数据库。尽管我丢失了在 c# 中生成数据库命令的代码文件,但我的配置文件中有代码优先方法并有一个种子方法。最初的解决方案是 VS 2010,但在 VS 2012 中打开并构建并运行主页。一旦我转到依赖于数据库的页面,就会出现错误。
1 2 3 4 | A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: SQL Network Interfaces, error: 26 - Error Locating Server/Instance Specified) |
我安装了 LocalDB 11.0 和 2012 Express。
我怎样才能\\'reset\\',以便我可以用我现有的代码在我的新机器上重新创建我的数据库?
我会添加更多代码/细节,但遗憾的是不确定哪些位与解决问题相关。
更新 1
为了创建一个 SQL Express 数据库,我尝试将连接字符串更改为
1 2 3 | <add name="RecruitModelContext" providerName="System.Data.SqlClient" connectionString="Server=.\\SQLEXPRESS;Initial Catalog=Recruitment; Integrated Security=True;"/> |
另外,我正在从 global.asax
中的 Application_Start() 调用以下内容
1 2 3 4 | using (var db = new RecruitModelContext()) { db.Database.Initialize(true); } |
但现在我收到了其他帖子中的 ProviderManifestToken 错误。我已经尝试了所有可以找到的方法,但没有得到解决方案。
更新 2
我的服务器名称上的连接字符串不正确(使用完全限定的服务器名称\\\\\\\\实例名称 - 已将不同的实例名称设置为默认名称),因此它从未看到我的 SQL 实例。
1 2 3 | <add name="RecruitModelContext" providerName="System.Data.SqlClient" connectionString="Server=MIKEPOOLE72\\SQL2012EXPRESS;Initial Catalog=Recruitment;Integrated Security=True;"/> |
删除了上面的初始化代码。从包管理器控制台重新运行 enable-migrations -Force。然后用我的 Seed 方法替换生成的配置文件。然后从控制台运行 Update-Database 并用我的数据创建我的数据库。
感谢@Code Chops 让我上路。
注意,我也使用了这些 MSDN 链接,它们对基础知识有所帮助,我确信我会再次访问这些链接。
http://msdn.microsoft.com/en-US/data/jj556606
http://msdn.microsoft.com/en-us/data/jj592674
错误消息显示您的应用找不到数据库。你的连接字符串是什么样的?我会先检查一下。您也可以在 .config 文件中尝试这样的操作:
1 2 3 4 | <connectionStrings> <add name="MyContext" connectionString="Data Source=|DataDirectory|MyContext.sdf" providerName="System.Data.SqlServerCe.4.0" /> </connectionStrings> |
用您的 DB Context 类的名称替换它所说的 MyContext ,它将在 AppData 目录中创建一个 MyContext.sdf 文件。要查看文件,您需要选择显示所有文件。至少你会知道你的代码是有效的。
我需要查看更多代码以获得更好的主意,但看起来您的连接字符串是问题所在。希望有帮助。
更新:
您当前正在使用默认的 EF 连接工厂,它应该可以工作...但您可能希望将其更改为按名称命名数据库。像这样的东西:
1 2 3 4 5 | <connectionStrings> <add name="RecruitModelContext" providerName="System.Data.SqlClient" connectionString="Server=.\\SQLEXPRESS;Database=YourDatabaseName;Integrated Security=True;"/> </connectionStrings> |
确保更改 Database= 部分以命名您的数据库。这是一篇关于 EntityFramework 配置设置的好文章。让我知道这是否有帮助。