我在VS 2012中使用EF5创建了一个MVC4解决方案,现在我正在尝试将数据库创建为Code First。在控制器的创建方法中,我添加了db.Database.CreateIfNotExists();
在我的机器上,我也运行了SQL Server 2012,我希望在那里创建数据库,而不是在某些SQL Express引擎或其他轻量级解决方案中。
我已经尝试了几种方法来建立正确的连接字符串,但都失败了,现在我不知道它应该如何看待。这就是它现在看起来的样子,但没有任何东西被创建,而我从CreateIfNotExists
得到的只是一个错误:
这就是我的连接字符串:
<add name="Tool.Models.Context" connectionString="Server=MSSQLSERVER;Initial Catalog=Tool.models.ToolDb.mdf;Integrated Security=SSPI;" providerName="System.Data.SqlClient" />
编辑:
在对这个问题进行了近一天的努力之后,我通过用localhost
代替MSSQLSERVER
来解决它(如果我查看配置管理器,它仍然是实例的名称)。谢谢你的评论。让我思考。
答案 0 :(得分:5)
localhost是本地服务器,而不是实例,您似乎正在使用默认实例(称为mssqlserver),因此不需要指定实例名称,只需要指定服务器名称,因此为什么在您的服务器中使用localhost替换MSSQLSERVER连接字符串有效。
您也可以在此处使用服务器的实际名称,例如SERVER-01(或者您特定数据库服务器的实际名称),它会产生相同的效果。
但是,如果您在计算机上安装了命名实例,则必须同时指定服务器名称和实例,例如localhost \ instancename或server-01 \ instancename
希望这有助于解释为什么放入localhost工作。
答案 1 :(得分:0)
那是对的...
默认情况下,大多数人可能已经知道,Visual Studio 2012 - ASP.NET MVC 4模板
将定义一个Default connectionString,指向Web.config中的(LocalDb)v11.0。
对于Visual Studio 2010 ASP.Net MVC 4项目模板,它指向SQLExpress ...
在我的情况下,我更喜欢将connectionString指向我用于开发的特定SQL Server 2012。
因此,假设我打开SQL Management Studio并在下拉列表中查看SQLServer2012-01名称,我希望在其中创建数据库+表, 那就是我通常使用的名字......
connectionString =“Server = SQLServer2012-01; InitialCatalog = ...”
之后您所要做的就是直截了当 - 按照定义中的步骤进行操作
-Enable的迁移
- [填写您的种子方法的内容 - 如果需要......]
-Add-Migration MyFirstMigration [或您想要的任何迁移名称]
-Update-Database -Verbose
您应该会在服务器资源管理器窗口中看到更新的结果。
希望有所帮助