Asp.net 如何首先使用实体框架代码更新数据库结构,而不丢失所有数据?
我需要更改数据库的结构(添加更多列并更改其中一个现有列)(我在WebAPI项目的“模型”中做了一些更改)。在Visual Studio 2013中是否有一些简单的方法可以做到这一点?您可以使用Asp.net 如何首先使用实体框架代码更新数据库结构,而不丢失所有数据?,asp.net,asp.net-mvc,entity-framework,asp.net-web-api,visual-studio-2013,Asp.net,Asp.net Mvc,Entity Framework,Asp.net Web Api,Visual Studio 2013,我需要更改数据库的结构(添加更多列并更改其中一个现有列)(我在WebAPI项目的“模型”中做了一些更改)。在Visual Studio 2013中是否有一些简单的方法可以做到这一点?您可以使用实体框架迁移并运行更新数据库命令,以生成可以手动运行的T-SQL脚本。这使您能够更好地控制应用于数据库的更改。或者,您可以信任EF为您做这件事。您可以在此处找到所有必要的ef迁移命令: 编辑 我提供的链接有一个名为“获取SQL脚本”的部分。要为迁移执行此操作,只需运行以下命令: updatedatabase
实体框架迁移
并运行更新数据库
命令,以生成可以手动运行的T-SQL脚本。这使您能够更好地控制应用于数据库的更改。或者,您可以信任EF为您做这件事。您可以在此处找到所有必要的ef迁移命令:
编辑
我提供的链接有一个名为“获取SQL脚本”的部分。要为迁移执行此操作,只需运行以下命令:
updatedatabase-Script-SourceMigration:$InitialDatabase-TargetMigration:yourmigrationname
您需要将“yourmigrationname”替换为迁移的名称,当您运行此操作时,您将得到一个新选项卡,其中只包含SQL脚本。然后,您可以选择保存或运行它。既然您对我是如何操作的发表了评论,我将把它作为一个答案发布以澄清 我在MSSQL服务器中进行所需的更改。我可以添加列、更改列名,甚至在需要时删除列 然后在我的模型(.edmx)中,我删除了刚刚在MSSQL服务器中更新的表。一旦我这样做了,我就在开放空间中单击鼠标右键,然后单击“从数据库更新模型”。然后,当选择“添加”选项卡时,我选择我的表。我发现这样做效果最好,因为“刷新”似乎从来都不适合我。单击“完成”后,您的模型现在将使用已更改表中的最新列进行更新
希望这能有所帮助 更新模式时是否所有数据都丢失了?您需要提供有关问题的更多详细信息。首先使用代码的默认行为应该是保留表和数据。如果您都在使用自动迁移,并且做了一些不删除和读取表就无法应用的更改,那么Entity Framework可能是为了迁移而这样做的,但是,我们需要更多的信息来明确地告诉您任何事情。您使用的是种子数据的初始值设定项类吗?我以前更新过SQL数据库,然后在不丢失数据的情况下更新了实体上下文。在MVC 4 EF代码中,首先可以通过安装称为数据库迁移的东西来更改数据库结构。在软件包控制台中键入
启用迁移
激活(或安装)迁移。然后,当您在代码中更改了数据库的结构时,在同一控制台中键入update database
将更新数据库的结构,例如在SQL Server上。好的,我键入了update database。您所说的“T-SQL脚本”是否是出现在“Migrations”文件夹中的“[somenumbers]\u Initial1.cs”文件?如何运行它?我认为添加迁移“migration_name”是更新模型后生成更改的方法。然后执行更新数据库-详细操作,将这些更改提交到数据库。