【问题标题】:C# Entity Framework : Rename table field without losing data, using automatic migrationsC# Entity Framework:使用自动迁移重命名表字段而不丢失数据
【发布时间】:2017-05-10 19:05:04
【问题描述】:

我正在使用 Entity Framework 的自动迁移和代码优先的方法。 我不使用数据包管理器控制台,也无权访问编码迁移。

我的模型中有一条线代表我的表格:

        public virtual DbSet<Customer> Customers { get; set; }

我重命名了客户的字段之一:

[Table("Customers")]
public partial class Customer
{
    [Key]
    [Column(TypeName = "numeric")]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int idCustomer { get; set; }
    public string name { get; set; }
    public int age { get; set; }
    public string mail { get; set; }
    public string password { get; set; }
}

我刚刚将“邮件”更改为“mailModified”。 但是当数据库更新时,实体从名称字段中删除了所有数据。 我认为它删除了我的专栏以使用新名称创建一个新专栏。

如何避免这种情况?如何让他明白只重命名列?

感谢您的参与

【问题讨论】:

  • 你试过什么?
  • 您可能不得不求助于基于代码的迁移。

标签: c# entity-framework


【解决方案1】:

你必须使用迁移命令来完成它..这样数据就不会丢失..

否则你可以在自动生成的上下方法中添加以下代码

RenameColumn("dbo.MyTable", "NewColumn", "OldColumn");

【讨论】:

  • 正确的语法是 RenameColumn("dbo.MyTable", "OldColumn", "NewColumn");
【解决方案2】:

在创建表类时尝试使用列属性

class Table
{
    [Column("ColumnName")]
    public int Column1 { get; set; }
    [Column("ColumnName")]
    public int Column2 { get; set; }
}

【讨论】:

    猜你喜欢
    • 2011-03-30
    • 2018-11-05
    • 2023-03-17
    • 2020-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-07
    相关资源
    最近更新 更多