Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/jenkins/5.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
Entity framework EF核心迁移是否可以手动编辑?_Entity Framework_Entity Framework Core_Entity Framework Migrations_Ef Core 2.0 - Fatal编程技术网

Entity framework EF核心迁移是否可以手动编辑?

Entity framework EF核心迁移是否可以手动编辑?,entity-framework,entity-framework-core,entity-framework-migrations,ef-core-2.0,Entity Framework,Entity Framework Core,Entity Framework Migrations,Ef Core 2.0,我在我的示例项目中使用了EF Core 2.0,其中包含一些值对象配置。我通过CLI命令行修改代码并生成迁移。在上一次迁移中,它并没有像应该的那样添加一个新的数据库表,而是尝试将现有表重命名为其他表,并为现有表创建一个额外的表。我想不出原因 问题是,由于EF Core的快照是一个独立于迁移本身的自动生成文件,所以我不想修改快照 我只想修改迁移脚本,使其不会重命名多个表,然后根据我创建的迁移生成快照 我在CLI中没有看到任何用于此的命令-修改支架式迁移并重新生成是否是一种很糟糕的做法,或者我缺少了

我在我的示例项目中使用了EF Core 2.0,其中包含一些值对象配置。我通过CLI命令行修改代码并生成迁移。在上一次迁移中,它并没有像应该的那样添加一个新的数据库表,而是尝试将现有表重命名为其他表,并为现有表创建一个额外的表。我想不出原因

问题是,由于EF Core的快照是一个独立于迁移本身的自动生成文件,所以我不想修改快照

我只想修改迁移脚本,使其不会重命名多个表,然后根据我创建的迁移生成快照

我在CLI中没有看到任何用于此的命令-修改支架式迁移并重新生成是否是一种很糟糕的做法,或者我缺少了一些明显的新链接,其中解释了如何手动修改迁移脚本

非常感谢

更新1:在注释之后,添加了有关快照的信息


因为当前数据库模式是用代码表示的,所以EF Core不必与数据库交互来创建迁移。添加迁移时,EF通过将数据模型与快照文件进行比较来确定更改的内容。EF仅在必须更新数据库时才与数据库交互+

我检查了源代码管理中生成的快照代码。它确实增加了一个额外的表作为我所需要的

生成此文件的迁移脚本充其量也很繁忙—将多个表重命名为彼此,然后警告这可能会导致多个问题

因为这对我来说是一个示例项目,至少到目前为止只有模拟数据,所以我决定使用它,而不是破坏自动脚本。我愿意在这个阶段丢失一些模拟数据,而不是在上面浪费时间

如果这是在生产数据库中,我会非常小心地手动创建相同的结果,同时修改scaffold和迁移文件


我接受这个答案(基本上说,就我目前所知,目前的EF Core并不支持它),因为现在没有其他候选人——如果有更好的答案出现,我将非常乐意接受

你不能直接修改文件吗?如果您没有另外指定,它位于Migrations文件夹中。我可以-但是,如果我遗漏了任何内容,这难道不会有让快照过时的风险吗?如果可能的话,我想从迁移生成它,如果代码的当前状态与迁移组合不匹配,框架将返回错误。@cassandrad如果快照和文件之间存在差异,会发生什么情况_同一文件夹中的ContextModelSnapshot文件如果不使用,它的用途是什么。我真的不明白快照是什么。你能详细说明一下吗?如果只更改脚本而不更改数据库集的上下文类型,则无法以正常方式再次重命名表。因此,如果要正确重命名表,需要使用Fluent API重命名类型或设置名称。@cassandrad请检查链接:-从那里:“因为当前数据库架构是用代码表示的,所以EF Core不必与数据库交互来创建迁移。添加迁移时,EF通过将数据模型与快照文件进行比较来确定更改的内容。EF仅在必须更新数据库时才与数据库交互。“-这是快照文件-我将更新问题以进行澄清。