使用代码优先重命名EF中的列 - c#

我在班上改名了。看起来像这样。

public class clsClassForStackoverflow
{
   [Column(TypeName = "varchar"), StringLength(150)]
   public string Name { get; set; }

由于结构上的更改,我不得不将其重命名。因此,我删除了该行并添加了新属性。之后,我创建了一个新的迁移文件来准备数据库更新,他想在该文件中删除旧列并添加新列。好吧,因为数据库中仍然有数据,所以将其更改为重命名。一滴一滴,它将消失。

新的迁移文件:

public partial class _100126_2 : DbMigration
{
    public override void Up()
    {
        RenameColumn("dbo.tbClassForStackoverflow", "ClassForStackoverflow_Name",   "ClassForStackoverflow_NewName");
    }

    public override void Down()
    {
        RenameColumn("dbo.tbClassForStackoverflow", "ClassForStackoverflow_NewName", "ClassForStackoverflow_Name");
    }
}

启动数据库更新后,我查看了我的课程,并且属性没有改变。它仍然命名为“名称”,而不是“ NewName”。在不让EF认为自己已删除并添加一列的情况下,我该如何更改?

参考方案

您需要按以下顺序进行更改:

将实体中的Name属性重命名为NewName
向您的项目添加新的迁移
更改迁移以进行重命名,而不是拖放/创建,但仅更改Up / Down方法的内容
编译并运行迁移

这就是我已经多次完成此操作的方式了。重要的是在创建迁移时不要触摸与迁移关联的模型快照。

附注:如果我没记错的话,如果满足某些(对我来说未知)约束,EF甚至会检测到重命名,因为我认为在进行简单的属性/列重命名时,甚至不必总是更改迁移。

当回复有时是一个对象有时是一个数组时,如何在使用改造时解析JSON回复? - java

我正在使用Retrofit来获取JSON答复。这是我实施的一部分-@GET("/api/report/list") Observable<Bills> listBill(@Query("employee_id") String employeeID); 而条例草案类是-public static class…

改造正在返回一个空的响应主体 - java

我正在尝试使用Retrofit和Gson解析一些JSON。但是,我得到的响应机构是空的。当我尝试从对象中打印信息时,出现NullPointerException。我确保URL正确,并且我也确保POJO也正确。我正在使用jsonschema2pojo来帮助创建POJO类。这是我要解析的JSON{ "?xml": { "@versi…

Entity Framework DbEntityEntry>'不包含Where的定义 - c#

此代码狙击手来自Adding CreatedDate to an entity using Entity Framework 5 Code First public override int SaveChanges() { DateTime saveTime = DateTime.Now; foreach (var entry in this.ChangeT…

如何以编程方式将ListView滚动到最后一个元素-Compact Framework - c#

我正在使用Windows Mobile 6.1上的3.5 Compact Framework开发应用程序。我有一个ListView,添加项目时想自动滚动此列表。我能怎么做? 参考方案 listView.EnsureVisible(listView.Items.Count - 1);

Mongo汇总 - javascript

我的收藏中有以下文件{ "_id": ObjectId("54490b8104f7142f22ecc97f"), "title": "Sample1", "slug": "samplenews", "cat": …