我在我的项目中使用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时检查了选项。
谢谢!
答案 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>();
}