ASP.NET Identity 2.0 DB第一种方法:添加新列

时间:2016-07-02 19:01:46

标签: asp.net-mvc entity-framework-6 asp.net-identity-2 db-first

我正在尝试将ASP.NET Identity 2.0与现有数据库一起使用。 我创建了一个MVC项目(使用个人帐户身份验证),然后我注册了一个用于创建数据库的用途。

然后:

  1. 我为必要的表创建了脚本并将它们添加到我自己的数据库
  2. 我添加了ADO.NET实体数据模型(数据库优先),其中包括我的表和身份表。
  3. 我运行了应用程序并注册了一个用户,一切都很顺利。
  4. 现在,我需要添加与AspNetUser表的关系。

    1. 我在DB中添加了Column LocationId与关系。
    2. 我在应用程序用户类中添加了以下内容:

      public virtual Region Region { get; set; }
      
    3. 然后,我更新了我的模型并运行应用程序,当我尝试注册新用户时,我收到以下错误:

        

      AspNet UserLogin:EntityType:EntitySet' AspNetUserLogins'基于类型' AspNet UserLogin'没有定义键。

    4. 在这种情况下,如何继续使用DB First Approach?

1 个答案:

答案 0 :(得分:1)

Identity使用Code First方法使Identity System尽可能地进行自定义,并且您正在使用DB第一种方法来进行常见的数据访问。所以有2个上下文,一个用于您的数据,另一个用于您的身份。您需要编写标识类并通过在软件包管理器控制台中输入以下内容来首先迁移Identity上下文类:

`Enable-Migrations -ContextNameType [Your_Identity_Context]

这将为您的Identity上下文类型启用代码首次迁移。如果您想在用户表格中添加region属性,请在' ApplicationUser' (或从IdentityUser派生的任何类)添加所需的region属性,然后应用迁移来更新数据库中的用户表。

生成SQL脚本并应用于数据库不是一个好方法。