在实体框架代码第一种方法中为现有AspNetUsers表创建模型

时间:2016-07-05 16:18:08

标签: entity-framework ef-code-first migration asp.net-identity ef-migrations

我正在开发一个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)
        {

        }
    }

如果不可能,最好的方法是什么?

0 个答案:

没有答案