我在身份的数据库中添加了一个新表,我想我搞砸了,因为现在在AspNetUsers表中我有一个新列,它是我的新表的外键,我不希望它在那里。 删除新列的最佳方法是什么?
这就是我开始的方式
public class ApplicationUser : IdentityUser
{
...
public virtual SuperAdminHistory SuperAdminHistory { get; set; }
}
这是我的班级
public class SuperAdminHistory
{
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int SuperAdminHistoryID { get; set; }
public string SuperAdminIdCreator { get; set; }
public string CreatedAdminID { get; set; }
public string DateCreated { get; set; }
public string ModifiedBy { get; set; }
public string ModifiedDate { get; set; }
public bool IsActive { get; set; }
}
然后我将它添加到ApplicationDbContext:IdentityDbContext
public System.Data.Entity.DbSet<SuperAdminHistory> SuperAdminHistory { get; set; }
然后我进入Package Manager控制台 并做了
添加迁移“NewTable”
则...
更新的数据库的
起初我在尝试创建一个新表时犯了一些错误,所以我想知道早期的错误是否在我的AspNetUsers表中创建了外键。
我的新表现在在数据库中。
答案 0 :(得分:0)
正确的方法是编写适当的SQL脚本并应用于数据库。
IF EXISTS (SELECT * FROM sys.foreign_keys WHERE object_id = OBJECT_ID(N'[dbo].[FK_AspNetUsers_YOURKEYNAME]') AND parent_object_id = OBJECT_ID(N'[dbo].[AspNetUsers]'))
ALTER TABLE [dbo].[AspNetUsers] DROP CONSTRAINT [FK_AspNetUsers_YOURKEYNAME]
GO
alter table AspNetUsers
drop coulmn SuperAdminHistory_SuperAdminHistoryID
答案 1 :(得分:0)
添加导航属性时,会创建关系,EF会添加外键。如果您不想要,请执行:
[NotMapped]
public virtual SuperAdminHistory SuperAdminHistory { get; set; }
或添加流畅的映射:.Ignore(p =&gt; p.SuperAdminHistory);
如果您进行了更改并应用了迁移,则应删除该字段。另一种选择是回滚先前的迁移:
Update-Database -TargetMigration:"name_of_migration"