【问题标题】:Column remapping unexpectedly changed the database schema in EF Core列重新映射意外更改了 EF Core 中的数据库架构
【发布时间】:2017-11-09 11:52:02
【问题描述】:

我有一个数据库列“completedcmets”,所以 EF 模型有这个:

    public string Completedcomments { get; set; }

本专栏中的信息必须作为“completionComments”提供,所以我认为这可以通过column remapping annotation 来完成。 我将我的 EF 模型更改为如下所示:

    [Column("completedcomments")]
    public string completionComments { get; set; }

我不确定列重新映射是否需要迁移才能生效,所以我做了一个以防万一。令我惊讶的是,迁移删除了我的“completedcmets”列,并在数据库中添加了一个“completionComments”列。

这不是我想要发生的事情(我必须进行还原才能从该列中恢复我的测试数据)。如果这不是列重新映射的作用,我如何将列“completedcmets”中的内容作为“completionComments”提供?这是我应该在控制器中做的事情,如果是的话,列重映射的意义何在?

【问题讨论】:

  • 这就是我理解它应该工作的方式。 completedcomments 是数据库中的列名,completionComments 在代码中。但我不会针对我的数据库运行迁移。

标签: c# entity-framework entity-framework-core


【解决方案1】:

我发现了我的错误,在 Context 文件中:

我有:

entity.Property(e => e.completionComments).HasColumnName("completionComments");

应该是:

entity.Property(e => e.completionComments).HasColumnName("completedcomments");

上下文文件中的错误导致架构更改。没有错误,列重新映射就像人们想象的那样工作,正如 Jasen 的评论所解释的那样。

重新映射不需要迁移。

【讨论】:

  • 您不应该混合使用属性和代码优先的流畅迁移。
猜你喜欢
  • 2023-02-23
  • 2023-01-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多