1

已将我的 MVC4/EF5 应用程序放在另一台机器上,现在想要生成数据库。尽管我丢失了在 C# 中生成数据库命令的代码文件,但我的配置文件中有代码优先方法并有一个种子方法。最初的解决方案是 VS 2010,但在 VS 2012 中打开并构建并运行主页。一旦我转到依赖于数据库的页面,就会出现错误。

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。

如何“重置”以便可以使用现有代码在新机器上重新创建数据库?

我会添加更多代码/细节,但不幸的是不确定哪些位与解决问题相关。

更新 1 为了创建一个 SQL Express 数据库,我尝试将连接字符串更改为

<add name="RecruitModelContext" providerName="System.Data.SqlClient" 
connectionString="Server=.\SQLEXPRESS;Initial Catalog=Recruitment;
Integrated Security=True;"/>

另外,我从 global.asax 中的 Application_Start() 调用以下内容

using (var db = new RecruitModelContext())
{
    db.Database.Initialize(true);
}

但是现在我收到了其他帖子中的 ProviderManifestToken 错误。我已经尝试了所有可以在那里找到的东西,但没有得到解决方案。

更新 2 我的服务器名称上的连接字符串不正确(使用完全限定的服务器名称\实例名称 - 已将不同的实例名称设置为默认值),因此它从未看到我的 SQL 实例。

<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

4

1 回答 1

0

错误消息说您的应用找不到数据库。你的连接字符串是什么样的?我会先检查一下。您也可以在 .config 文件中尝试这样的操作:

<connectionStrings>
 <add name="MyContext" connectionString="Data Source=|DataDirectory|MyContext.sdf"
      providerName="System.Data.SqlServerCe.4.0" />
</connectionStrings>

将 MyContext 替换为您的 DB Context 类的名称,它将在 AppData 目录中创建一个 MyContext.sdf 文件。要查看文件,您需要选择显示所有文件。至少你会知道你的代码是有效的。

我需要查看更多代码才能有更好的主意,但看起来你的连接字符串是问题所在。希望有帮助。

更新:

您当前正在使用默认的 EF 连接工厂,它应该可以工作......但您可能希望将其更改为按名称命名数据库。像这样的东西:

<connectionStrings>
<add name="RecruitModelContext" 
    providerName="System.Data.SqlClient" 
    connectionString="Server=.\SQLEXPRESS;Database=YourDatabaseName;Integrated Security=True;"/>
</connectionStrings> 

确保更改 Database= 部分以命名您的数据库。是一篇关于 EntityFramework 配置设置的好文章。让我知道这是否有帮助。

于 2013-09-26T21:47:40.080 回答