Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 如何首先使用实体框架代码更新数据库结构,而不丢失所有数据?_Asp.net_Asp.net Mvc_Entity Framework_Asp.net Web Api_Visual Studio 2013 - Fatal编程技术网

Asp.net 如何首先使用实体框架代码更新数据库结构,而不丢失所有数据?

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

我需要更改数据库的结构(添加更多列并更改其中一个现有列)(我在WebAPI项目的“模型”中做了一些更改)。在Visual Studio 2013中是否有一些简单的方法可以做到这一点?

您可以使用
实体框架迁移
并运行
更新数据库
命令,以生成可以手动运行的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”是更新模型后生成更改的方法。然后执行更新数据库-详细操作,将这些更改提交到数据库。