asp.net - 我可以在 ASP.NET MVC 5 中重命名 Code First 迁移吗

标签 asp.net ef-code-first entity-framework-migrations asp.net-mvc-5.1

这是一个关于 ASP.NET MVC 5 中代码优先迁移的一个有点奇怪的问题。我有一个正在进行的项目,我使用手动迁移来更新我的数据库。如果我做了任何改变模型中数据库结构的事情,我就会进入包管理器控制台并输入

添加迁移“MigrationName”

但在此过程中,我给我的两次迁移命名了错误的名称。我想更正每个文件的名称,但我想确保这不会影响它们的完整性,我只计划重命名文件名的第二部分(描述性部分)而不是时间戳。

例如,我的名字如下:

201411190809335_CreateStageTypeRender

但它应该读

201411190809335_CreateSeatingTypeRender

如果我现在不更改名称,将来我可能会意外地进行迁移,因为我命名错误。

似乎当我之前在不是重要项目的情况下重命名它们时, Visual Studio 重命名了任何子文件(.cs、.resx)。因此,这似乎不会成为问题,而且时间戳将保持同步,从而使它们保持有序。

问题:还有什么我应该考虑的吗?可以重命名迁移文件名的描述性部分吗?

顺便说一句..我还可以进入 Designer.cs 文件并将获取返回值重命名为:

public sealed partial class CreateStageTypeRender : IMigrationMetadata
    private readonly ResourceManager Resources = new ResourceManager(typeof(CreateStageTypeRender));
    string IMigrationMetadata.Id
    {
        get { return "201411190809335_CreateStageTypeRender"; }
    }

public sealed partial class CreateSeatingTypeRender : IMigrationMetadata
    private readonly ResourceManager Resources = new ResourceManager(typeof(CreateSeatingTypeRender));
    string IMigrationMetadata.Id
    {
        get { return "201411190809335_CreateSeatingTypeRender"; }
    }

最后,我进入数据库并重命名了与旧迁移名称相对应的记录,并更改了它们以反射(reflect)新的迁移名称。否则我假设 EF/Visual Studio 会认为有新的迁移,而实际上没有。

我想我已经涵盖了所有基础。如果您认为我错过了任何内容或者由于某种原因这不是一个好主意,请告诉我。

最佳答案

我终于回到了有这个问题的项目,并且效果很好。

在您的示例中,您提到将返回类型更改为 CreateSeatingTypeRender...我只是想澄清一下,对于我的测试,以一致性的名义,应该在五个地方进行更改。

其中四个在代码中:类名、.designer 文件的部分类名、资源管理器 typeof 和您提到的 IMigrationMetadata.Id 属性……

最后的地方是在数据中,正如你也提到的,更新MigrationId,从旧名称到新名称。

进行这些更改后,upgrade-database 命令完美运行。

对于任何尝试此操作的人,还请记住,如果您要在开发数据库上重命名迁移...如果该迁移已存在于生产计算机上,则必须手动将 __migration 表行重命名为以及当您部署到该计算机时迁移已经完成的任何其他位置。

测试说明: • 我在 ef 6.1.3 上进行了测试 • 这不是 MVC5 特定的

关于asp.net - 我可以在 ASP.NET MVC 5 中重命名 Code First 迁移吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27055365/

相关文章:

c# - 无法连接到已配置的开发 Web 服务器

c# - 什么约定将 poco 属性自动映射到列?我怎样才能禁用该自动映射?

c# - 首先使用 EF 代码将 datetime2 数据类型转换为 datetime 数据类型错误?

c# - EF6 代码优先迁移中的架构名称重复

c# - 第二次迁移时 Entity Framework Core 编译器错误

asp.net - 如何在网页上调用 #include virtual 时使用变量?

c# - 将网址转换为有效的 href 值

c# - 'Operator Name' 运算符后缺少操作数

c# - 无法使用 ASP.net Core 2 添加迁移

entity-framework - Azure:在暂存环境中使用 Code First 迁移进行测试的最佳实践