ASP.NET Identity 2.0 数据库优先方法:添加新列
ASP.NET Identity 2.0 DB First Approach: Adding new Columns
我正在尝试对现有数据库使用 ASP.NET Identity 2.0。
我已经创建了一个 MVC 项目(使用个人帐户身份验证),然后我注册了一个使用以创建数据库。
然后:
- 我为必要的 table 创建了脚本并将它们添加到我自己的数据库中
- 我添加了 ADO.NET 实体数据模型(首先是数据库),其中包括我的 table 加上身份 table。
- 我运行申请并注册了一个用户,一切正常。
现在,我需要添加与 AspNetUser
table 的关系。
- 我在数据库中添加了具有关系的列 LocationId。
我向应用程序用户添加了以下内容Class:
public virtual Region Region { get; set; }
然后,我更新了模型和 运行 应用程序,当我尝试注册新用户时,出现以下错误:
AspNet UserLogin: EntityType: EntitySet 'AspNetUserLogins' is based on type 'AspNet UserLogin' that has no keys defined.
在这种情况下如何继续使用数据库优先方法?
Identity 使用 Code First 方法使 Identity System 尽可能多地进行自定义,并且您正在使用 DB first 方法进行公共数据访问。所以有两种上下文,一种是针对您的数据,另一种是针对您的身份。您需要编写 Identity classes 并通过在程序包管理器控制台中键入以下代码首先迁移身份上下文 class:
`启用迁移-ContextNameType [Your_Identity_Context]
这将为您的身份上下文类型启用代码优先迁移。如果要在用户 table 中添加区域 属性,则在 'ApplicationUser'(或从 IdentityUser 派生的任何 class)中添加所需的区域 属性,然后应用迁移更新数据库中的用户 table。
生成 SQL 脚本并应用到数据库不是一个好的方法。
我正在尝试对现有数据库使用 ASP.NET Identity 2.0。 我已经创建了一个 MVC 项目(使用个人帐户身份验证),然后我注册了一个使用以创建数据库。
然后:
- 我为必要的 table 创建了脚本并将它们添加到我自己的数据库中
- 我添加了 ADO.NET 实体数据模型(首先是数据库),其中包括我的 table 加上身份 table。
- 我运行申请并注册了一个用户,一切正常。
现在,我需要添加与 AspNetUser
table 的关系。
- 我在数据库中添加了具有关系的列 LocationId。
我向应用程序用户添加了以下内容Class:
public virtual Region Region { get; set; }
然后,我更新了模型和 运行 应用程序,当我尝试注册新用户时,出现以下错误:
AspNet UserLogin: EntityType: EntitySet 'AspNetUserLogins' is based on type 'AspNet UserLogin' that has no keys defined.
在这种情况下如何继续使用数据库优先方法?
Identity 使用 Code First 方法使 Identity System 尽可能多地进行自定义,并且您正在使用 DB first 方法进行公共数据访问。所以有两种上下文,一种是针对您的数据,另一种是针对您的身份。您需要编写 Identity classes 并通过在程序包管理器控制台中键入以下代码首先迁移身份上下文 class:
`启用迁移-ContextNameType [Your_Identity_Context]
这将为您的身份上下文类型启用代码优先迁移。如果要在用户 table 中添加区域 属性,则在 'ApplicationUser'(或从 IdentityUser 派生的任何 class)中添加所需的区域 属性,然后应用迁移更新数据库中的用户 table。
生成 SQL 脚本并应用到数据库不是一个好的方法。