代码优先环境
我正在尝试从软件包管理器控制台更新数据库。如果我的域类发生变化,我必须删除并创建数据库。除了删除数据库,我如何更新数据库?
命令
1.通过使用这个命令,我成功地安装了实体框架。
PM> Install-Package EntityFramework
1.通过使用此命令,它在我的项目中创建了迁移文件。
PM> Enable-Migrations
1.通过使用此命令,我可以更新表,但我有一个问题在这里。
PM> Update-Database
错误
指定“-Verbose”标志以查看正在应用于目标数据库的SQL语句。System.Data.SqlClient.SqlException(0x 80131904):建立与SQL Server的连接时出现与网络相关的或特定于示例的错误。找不到服务器或服务器不可访问。请验证示例名称是否正确,以及SQL Server是否配置为允许远程连接。
∮怀疑就在眼前∮
有时,如果POCO类中只有一个字段更改,它可能会更新。例如,我更新了域类的more number。如何从软件包管理器控制台更新数据库?
5条答案
按热度按时间ztmd8pv51#
可以通过
ConnectionString
参数指定连接字符串:此外,您还需要使用此参数和
Add-Migration
命令的相同值:7cwmlq892#
我以前
Enable-Migrations -EnableAutomaticMigrations -Force
那么
Update-Database
这在保留测试数据的同时迁移了我的更改(附加列)。我认为这是原型化时最懒惰的选择。
zi8p0yeb3#
您似乎遇到了多个问题。关于是否要删除并重新创建数据库,这取决于您的数据库初始值设定项。如果要使用迁移,请将其更改为MigrateDatabaseToLatestVersion. http://www.codeguru.com/csharp/article.php/c19999/Understanding-Database-Initializers-in-Entity-Framework-Code-First.htm
第二,不管您更改了多少字段,它们都会根据上次迁移的更改滚入单个迁移。
第三,正如其他人所指出的,你似乎有一个连接字符串的问题。虽然你可以添加到Add-Migration和Update-Migration我可能会修复它在应用程序中。我设置我的在我的上下文的构造函数指向我的配置文件(web.config为ASP.NET)。
tct7dpnv4#
连接字符串应放在何处?
您不需要在包管理器控制台中的每个命令中都指定它。您可以将它放在DbContext类(读取“from DbContext derived class”)所在项目的appsettings.json中。
它将用于迁移。
重要:如果您的解决方案中有多个项目,您必须在“Default project”下拉列表中选择项目(在包管理器控制台中),并且您必须将项目设置为启动项目(在解决方案资源管理器中)。
如果不这样做,可能会导致错误的appsettings.json与不正确/不同的connectionstring一起使用。
这是我使用EF Core 2.1的经验,可能也适用于EF的其他版本。
ubby3x7f5#
您需要更新SSDT转到工具〉扩展和更新〉更新〉SQL Server数据工具