c# - 在 Entity Framework 代码优先迁移中删除移动的属性

标签 c# entity-framework entity-framework-migrations

我需要使用迁移将代码优先 Entity Framework 属性从一个实体移动到另一个实体。这类似于 Move property to new Entity in Entity Framework Code First Migration ,但有一个额外的问题:我需要在我的应用程序中发送迁移,以便可以自动迁移具有现有数据的客户。

该问题中接受的答案是将过程分为三个迁移:

  1. 添加新属性
  2. 将数据从旧属性移至新属性
  3. 删除旧属性

第二次迁移中用于移动数据的代码是:

using (var context = new AppContext())
{
    var events = context.Set<Event>().ToArray();
    foreach (var ev in events)
    {
        ev.Location = new Location { City = ev.City };
    }
    context.SaveChanges();
}

问题是,当我删除旧属性以生成第三次迁移时,第二次迁移的代码将不再编译,因为属性 ev.City 不再存在。

在第三次迁移中从代码模型和数据库中删除属性,同时仍在第二次迁移中移动数据的正确技术是什么?有没有办法编写第二个迁移代码来移动数据而不引用ev.City?是否有 Entity Framework 方法允许我在没有具有该名称的属性的情况下检索 ev.City 的值,或者我是否需要一直下降到原始 SQL 命令?

最佳答案

我不会在您的迁移中使用上下文。相反,我会在迁移中使用它:

Sql("更新 x SET foo=bar");

那么你的实体是什么样子并不重要。

关于c# - 在 Entity Framework 代码优先迁移中删除移动的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37078705/

相关文章:

c# - 将引用托管代码中分配的内存的指针传递给非托管代码

c# - 如何实现像 Buxfer : Open Id, Facebook、Google、Aol 等通用登录系统

wpf - 在一个项目中一起使用WPF,MVVM和 Entity Framework 进行简单的视频/教程视频

c# - 如何使用 Entity Framework 6 在字段中存储对象列表

c# - 团队环境中 Entity Framework 核心模型快照的问题

c# - EF 中 IDatabaseInitializer 的正确用法是什么?

c# - 为什么对象(根)类不冲突多重继承

c# - 如何为方法返回 double 或字符串

entity-framework - .edmx 文件的用途是什么?

c# - 为什么表达式在 linq 中不起作用