问题描述
我创建了一些新表,我发现我没有对id使用好的命名约定。
I created some new tables and I noticed I didn't use the good naming convention for the ids.
所以我做了一个新的使用新ID的add-migration
,但是当我尝试更新数据库
时,出现以下错误:
So I did a new add-migration
with the new ids but when I try to update-database
I have the following error :
我不明白,因为脚本首先删除所有约束。
I don't understand because the script starts by dropping all constraints.
有人可以解释如何解决此错误吗?
Could someone explain how to solve this error please?
我正在使用新方法<$ c首先从现有数据库中的$ c>代码。这是 Up
函数
I'm using the new approach code first from an existing database
from entity 6.1. Here is the Up
function
public override void Up()
{
DropForeignKey("dbo.DB_Company_Profile", "DB_Category_Id", "dbo.DB_Category");
DropForeignKey("dbo.DB_Category_Translation", "DB_Category_Id", "dbo.DB_Category");
DropForeignKey("dbo.DB_User_Type_Translation", "DB_User_Type_Id", "dbo.DB_User_Type");
DropForeignKey("dbo.DB_Company_Profile", "category_id", "dbo.DB_Category");
DropForeignKey("dbo.DB_Category_Translation", "category_id", "dbo.DB_Category");
DropForeignKey("dbo.AspNetUsers", "DB_User_Type_user_type_id", "dbo.DB_User_Type");
DropForeignKey("dbo.DB_User_Type_Translation", "user_type_id", "dbo.DB_User_Type");
DropIndex("dbo.DB_Company_Profile", new[] { "DB_Category_Id" });
DropIndex("dbo.DB_Category_Translation", new[] { "DB_Category_Id" });
DropIndex("dbo.DB_User_Type_Translation", new[] { "DB_User_Type_Id" });
DropColumn("dbo.DB_Company_Profile", "category_id");
DropColumn("dbo.DB_Category_Translation", "category_id");
DropColumn("dbo.DB_User_Type_Translation", "user_type_id");
RenameColumn(table: "dbo.AspNetUsers", name: "DB_User_Type_Id", newName: "DB_User_Type_user_type_id");
RenameColumn(table: "dbo.DB_Company_Profile", name: "DB_Category_Id", newName: "category_id");
RenameColumn(table: "dbo.DB_Category_Translation", name: "DB_Category_Id", newName: "category_id");
RenameColumn(table: "dbo.DB_User_Type_Translation", name: "DB_User_Type_Id", newName: "user_type_id");
RenameIndex(table: "dbo.AspNetUsers", name: "IX_DB_User_Type_Id", newName: "IX_DB_User_Type_user_type_id");
DropPrimaryKey("dbo.DB_Category");
DropPrimaryKey("dbo.DB_User_Type");
AddColumn("dbo.DB_Category", "category_id", c => c.Int(nullable: false, identity: true));
AddColumn("dbo.DB_User_Type", "user_type_id", c => c.Int(nullable: false, identity: true));
AlterColumn("dbo.DB_Company_Profile", "category_id", c => c.Int(nullable: false));
AlterColumn("dbo.DB_Category_Translation", "category_id", c => c.Int(nullable: false));
AlterColumn("dbo.DB_User_Type_Translation", "user_type_id", c => c.Int(nullable: false));
AddPrimaryKey("dbo.DB_Category", "category_id");
AddPrimaryKey("dbo.DB_User_Type", "user_type_id");
CreateIndex("dbo.DB_Company_Profile", "category_id");
CreateIndex("dbo.DB_Category_Translation", "category_id");
CreateIndex("dbo.DB_User_Type_Translation", "user_type_id");
AddForeignKey("dbo.DB_Company_Profile", "category_id", "dbo.DB_Category", "category_id", cascadeDelete: true);
AddForeignKey("dbo.DB_Category_Translation", "category_id", "dbo.DB_Category", "category_id", cascadeDelete: true);
AddForeignKey("dbo.DB_User_Type_Translation", "user_type_id", "dbo.DB_User_Type", "user_type_id", cascadeDelete: true);
AddForeignKey("dbo.AspNetUsers", "DB_User_Type_user_type_id", "dbo.DB_User_Type", "user_type_id");
DropColumn("dbo.DB_Category", "Id");
DropColumn("dbo.DB_User_Type", "Id");
}
推荐答案
我必须删除外文在运行 update-database
命令之前,请先手动输入密钥。因为我数据库中的约束名称类似于: FK_dbo.AspNetUsers_dbo.DB_User_Type_DB_User_TypeId
I had to delete the foreign key manually before running the update-database
command. Because the constraint name in my DB is something like: FK_dbo.AspNetUsers_dbo.DB_User_Type_DB_User_TypeId
而约束脚本是尝试删除的是:
FK_dbo.AspNetUsers_dbo.DB_User_Type_DB_User_Type_Id
While the constraint the script is trying to drop is:FK_dbo.AspNetUsers_dbo.DB_User_Type_DB_User_Type_Id
这篇关于由于实体无法删除约束,因此无法更新数据库的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!