实体框架:无法为代码优先迁移更改DataSource

时间:2017-05-08 11:48:27

标签: sql-server entity-framework ef-migrations

我正在开发一个项目,我正在使用Entity Framework以及代码优先迁移来更新我的数据库。我在另一台机器上启动了这个项目,效果非常好。现在我检查了另一台机器上的代码。由于这台机器没有数据库,我在nuget中运行了update-database命令。它应该应用我之前的迁移并在此计算机上创建一个新数据库,但它显示以下错误。

error

我阅读了this MSDN文章

  

如果本地SQL Express实例可用(默认情况下使用Visual Studio 2010安装),则Code First已在该实例上创建数据库   如果SQL Express不可用,则Code First将尝试使用LocalDb(默认情况下安装在Visual Studio 2012中)

我理解的是,当我在第一台机器上启用迁移时,它使用SQLEXPRESS实例创建数据库作为DataSource,因为我在当前机器中没有这个,所以它无法创建数据库。所以我试图将EntityFramework的DataSource更改为我当前的sql server的实例,即LAPTOP-HD618J49。为此,我尝试在app.config中使用此实例编写硬编码连接字符串,在Data Context类中更改了ContextName但无济于事。请告诉我一些我可能遗失的问题?

1 个答案:

答案 0 :(得分:2)

我终于解决了这个问题。之前我尝试使用base("name=ConnectionStringNameHere")但是当我在包管理器控制台中运行update-database命令时它没有用。奇怪的原因是Visual Studio不知道检查ConnectionStringName的app.config。虽然我已经在包管理器控制台的下拉列表中选择了具有实体框架的模块。我必须从解决方案资源管理器窗口中选择具有实体框架的模块,并将其设置为启动项目。这以某种方式解决了问题,它能够从更新的DataSource模块的app.config中选择ConnectionStringName。