0

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

然后:

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

现在,我需要添加与AspNetUser表的关系。

  1. 我在数据库中添加了具有关系的列 LocationId。
  2. 我在应用程序用户类中添加了以下内容:

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

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

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

4

1 回答 1

1

Identity 使用 Code First 方法使 Identity System 尽可能多地进行自定义,并且您使用 DB first 方法进行常见数据访问。所以有两种情况,一种是你的数据,另一种是你的身份。您需要通过在包管理器控制台中键入以下内容来编写身份类并首先迁移身份上下文类:

`Enable-Migrations -ContextNameType [Your_Identity_Context]

这将为您的身份上下文类型启用代码优先迁移。如果要在用户表中添加区域属性,则在“ApplicationUser”(或从 IdentityUser 派生的任何类)中添加所需的区域属性,然后应用迁移以更新数据库中的用户表。

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

于 2016-07-02T23:18:52.980 回答