我正在开发一个Asp.Net mvc5项目。我使用Entity Framework代码第一种方法与数据库进行交互。我正在使用Identity System进行用户身份验证。但是我将AspNetUsers表从身份系统集成到我的模型时遇到了问题。我的身份系统数据库上下文和模型数据库上下文类是不同的,因为我使用内置的包含身份系统。
但是连接字符串是相同的。两者都使用默认连接字符串但模型在不同的项目中。现在我正处于项目的中间。我有现有的模型类映射到数据库中的表。我从UI创建了一个用户帐户,因此身份系统所需的表(包括AspNetUsers表)是自动迁移的。现在我想创建模型类来映射AspNetUsers表,因为我想在AspNetUsers表和现有表之间建立关系。所以我创建了一个名为" AspNetUser"的模型类。我的模型项目中的类。然后我根据数据库中的AspNetUsers表为该类创建了属性。然后我为我的模型添加迁移和更新数据库。它给了我以下错误。
There is already an object named 'AspNetUsers' in the database.
我能想到的是删除AspNetUsers表和更新数据库。但是如果我删除它,我必须删除身份系统所需的其他表,因为它们具有FK关系。我不想要这个。我能想到的第二种方法是删除身份系统所需的所有表。然后迁移AspNetUser模型类。然后删除该类并从UI注册新帐户。因此,将再次创建身份系统所需的所有表格。
第二种方式,我必须删除表并发生数据丢失。如何迁移覆盖现有的AspNetUsers表?可能吗?将AspNetUsers表集成到我的模型中的最佳方法是什么?
这是迁移文件夹
中的配置类internal sealed class Configuration : DbMigrationsConfiguration<PatheinFashionStore.Domain.Concrete.StoreContext>
{
public Configuration()
{
AutomaticMigrationsEnabled = true;
AutomaticMigrationDataLossAllowed = true;
}
protected override void Seed(PatheinFashionStore.Domain.Concrete.StoreContext context)
{
}
}
这是我的上下文初始化类
public class ContextInitializer : System.Data.Entity.CreateDatabaseIfNotExists<StoreContext>
{
protected override void Seed(StoreContext context)
{
}
}
如果不可能,最好的方法是什么?