.net core 实体框架迁移错误重命名表

.net core 实体框架迁移错误重命名表,.net-core,.net-core-3.1,.net Core,.net Core 3.1,我试图通过代码优先迁移将新模型添加到我的项目中。 模型如下所示: public class Renting { [Key] public int Id { get; set; } public string RequesterEmail { get; set; } public string RequesterName { get; set; } public int RoomNumber{ get; set; } public Ren

我试图通过代码优先迁移将新模型添加到我的项目中。 模型如下所示:

public class Renting
{
    [Key]
    public int Id { get; set; }
    
    public string RequesterEmail { get; set; }
    public string RequesterName { get; set; }

    public int RoomNumber{ get; set; }
    public RentalOption RentalOption { get; set; }
    public User User { get; set; }
}
用户和Rentaloption将连接这些表。 我添加了一个迁移,然后尝试从“包管理器控制台”更新数据库

然后我收到一条错误消息:

fail: Microsoft.EntityFrameworkCore.Database.Command[20102]
      Failed executing DbCommand (112ms) [Parameters=[], CommandType='Text', CommandTimeout='30']
      EXEC sp_rename N'[User]', N'Users';
Failed executing DbCommand (112ms) [Parameters=[], CommandType='Text', CommandTimeout='30']
EXEC sp_rename N'[User]', N'Users';
Microsoft.Data.SqlClient.SqlException (0x80131904): Error: The new name 'Users' is already in use as a object name and would cause a duplicate that is not permitted.

我没有改变用户模型。如何解决这个问题?

实体框架会自动将表名复数:用户将成为用户

检查此链接

这样做:

protected override void OnModelCreating(ModelBuilder modelBuilder)
{    
    modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
}
模型创建时受保护的覆盖无效(ModelBuilder ModelBuilder)
{    
modelBuilder.Conventions.Remove();
}
您可以给出如下表名:(在OnModelCreating()中)

modelBuilder.Entity().ToTable(“用户”);

好的,这不是问题。这个问题就像更新数据库尝试重新创建表一样,不管它是否已经存在。我认为您的问题是您启用了自动迁移。你需要禁用它。见:
modelBuilder.Entity<User>().ToTable("Users");