2013-08-19 63 views
1

我在VS 2012中用EF5创建了MVC4解决方案,现在我试图让数据库创建Code First。在创建控制器的方法我添加了db.Database.CreateIfNotExists(); 在我的机器上,我也有SQL Server 2012运行,并且我想在那里创建数据库而不是在某些SQL Express引擎或其他轻量级解决方案中。用于EF5的SQL Server 2012连接字符串代码优先

我已经尝试了几种方法来制作正确的连接字符串,但都失败了,现在我不知道它应该如何显示。这是现在的样子,但没有被创建,以及所有我从CreateIfNotExists得到的是一个错误:

  • 的InnerException {“,而与SQL Server建立连接时出现与网络相关的或特定于实例的错误。验证实例名称是否正确,并且SQL Server已配置为允许远程连接(提供程序:命名管道提供程序,错误:40 - 无法打开与SQL Server的连接)“} System.Exception的{} System.Data.SqlClient.SqlException

这是我的连接字符串的样子:

<add name="Tool.Models.Context" connectionString="Server=MSSQLSERVER;Initial Catalog=Tool.models.ToolDb.mdf;Integrated Security=SSPI;" providerName="System.Data.SqlClient" />

编辑:

这个问题挣扎了将近一天后,我代localhostMSSQLSERVER(这仍然是实例的名称,如果我看配置管理器)解决它。感谢您的意见。让我想到。

+0

似乎您在名为MSSQLSERVER的主机上没有默认实例,或者别名MSSQLSERVER没有很好定义。 – tschmit007

+0

您可以使用SSMS访问此服务器吗?为什么在连接字符串初始目录中有.mdf?您只需指定数据库名称即可。 – Nilesh

回答

5

localhost是本地服务器,而不是实例,您似乎使用默认实例(称为mssqlserver),因此不需要指定实例名称,只需指定服务器名称,为什么用localhost替换MSSQLSERVER你的连接字符串工作。

您也可以在这里使用服务器的实际名称,例如SERVER-01(或者你的特定数据库服务器的实际名称是什么),它会产生相同的效果。

但是,如果您在机器上安装了命名实例,则必须指定服务器名称和实例,例如, localhost \ instancename或server-01 \ instancename

希望这有助于解释为什么放置本地主机的作品。

0

这是正确的......

默认情况下,大多数可能已经注意到,Visual Studio的2012 - ASP.NET MVC 4个模板 将定义一个默认的connectionString,它指向一个网站(的LocalDB)V11.0的.config。 在Visual Studio 2010 ASP.Net MVC 4项目模板的情况下,它指向SQLExpress ...

在我的情况下,我更喜欢将connectionString指向我用于开发的特定SQL Server 2012。

所以我们可以说我打开SQL Management Studio并在droplist,我要创建的数据库+表见SQLServer2012-01名, 嗯,这名字,我通常会使用...

的connectionString =“Server = SQLServer2012-01; InitialCatalog = ...“

所有你需要做的事后很简单 - 按照定义
-Enable的迁移
步骤 - [填充内容的种子的方法 - 如果需要的话...]
- 添加迁移MyFirstMigration [或者你想要的任何迁移名称]
-Update-数据库-Verbose

,你应该看到的结果在服务器资源管理器窗口中更新。

希望它可以帮助

相关问题