实体框架重命名错误

时间:2017-07-17 13:15:29

标签: c# sql-server entity-framework

我在我的项目中使用Entity Framework Code First,我做了一些非常愚蠢的事情,我无法修复。我在SQL Server Management Studio中重命名了一个表,然后将其删除。然后我重新创建了正确的表(只是一个不应该在这里的's')。现在它不再存在了,我不断在我的查询中获得异常,因为EF会查找一个不再存在的表(即使我将其重命名为无处不在!)。现在我的表名为RelImpUser,过去是RelImpUsers

所以我尝试在SQL Server中重新创建表,然后使用以下命令进行迁移:

    public override void Down()
    {
        DropTable("dbo.RelImpUsers");
    }

但这不会删除我的表格。每次我执行查询时,它都会在RelImpUsers中查找,而不是RelImpUser,这是我在代码中放置的唯一名称。任何想法如何解决这一问题?如果你愿意,我可以添加一些代码,我觉得这里没什么用。

编辑1:这可能与我的表格的复数有关。所以我的所有表都有复数名称,但是新表没有,但EF仍然是复数,因为我在创建DB Code First时检查了选项。

谢谢!

1 个答案:

答案 0 :(得分:1)

Code First使用其模型构建查询。您需要注释您的RelImpUser类(或添加可比较的流畅代码):

using System.ComponentModel.DataAnnotations.Schema;

[Table("RelImpUser")]
public class RelImpUser
{
    public int RelImpID { get; set; }
    public string Field1{ get; set; }
    ...
}

流利的等价物:

modelBuilder.Entity<RelImpUser>().ToTable("RelImpUser");

如果您不想要复数名称,可以关闭该约定:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
}