.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");