在 ASP.Net MVC 6 Identity 框架中实现继承
Implement inheritence in ASP.Net MVC6 Identity framework
我目前正在开发 ASP.Net 5 / ASP.Net MVC 6 应用程序。我使用 EntityFramework 7 作为 ORM 框架和代码优先方法。
在我的模型中,我有以下内容:
- 一个
AppUser
class,继承自 IdentityUser<int>
。 IdentityUser
是通过 Microsoft.AspNet.Identity.EntityFramework
包提供的,并允许从提供的 class 继承,通过指定主键的数据类型,当然,还可以向其中添加自定义字段。一切正常(数据库模式、插入、...)
- A
Person
class,它继承了前面的,并增加了一些应用程序特定的字段和逻辑。基本上,我的想法是我应用程序中的每个人都是潜在用户,但并非每个用户都需要是一个人。
对于我所有的模型对象,我实现了一个 通用存储库 方法,它基本上为每个模型 class 实现了通用的 CRUD 操作,并允许重写通用方法对于特定域 classes.
但对于 AppUser class,ASP.Net Identity framework 带有自己的存储库,基本上允许添加用户、向用户添加角色、检查登录的唯一性等。 .
我的问题是:如何将这两个存储库一起使用,以便当我添加一个 Person
时,它会通过身份框架存储库创建一个 AppUser
,然后存储字段我的自定义 Person
在同一数据库记录中 ?
请注意,AppUser 上的 Person 继承已通过代码优先解决为单个 table 继承:相同的 table 存储 AppUser 和 Persons,并生成了一个判别字段。
您创建了一个自定义管理器 class,它扩展了身份框架提供的用户管理器 class。这个新的 CustomUserManager class 将具有 UserManager class 的所有功能,加上您要实现的用于添加 Person
的新功能
我目前正在开发 ASP.Net 5 / ASP.Net MVC 6 应用程序。我使用 EntityFramework 7 作为 ORM 框架和代码优先方法。 在我的模型中,我有以下内容:
- 一个
AppUser
class,继承自IdentityUser<int>
。IdentityUser
是通过Microsoft.AspNet.Identity.EntityFramework
包提供的,并允许从提供的 class 继承,通过指定主键的数据类型,当然,还可以向其中添加自定义字段。一切正常(数据库模式、插入、...) - A
Person
class,它继承了前面的,并增加了一些应用程序特定的字段和逻辑。基本上,我的想法是我应用程序中的每个人都是潜在用户,但并非每个用户都需要是一个人。
对于我所有的模型对象,我实现了一个 通用存储库 方法,它基本上为每个模型 class 实现了通用的 CRUD 操作,并允许重写通用方法对于特定域 classes.
但对于 AppUser class,ASP.Net Identity framework 带有自己的存储库,基本上允许添加用户、向用户添加角色、检查登录的唯一性等。 .
我的问题是:如何将这两个存储库一起使用,以便当我添加一个 Person
时,它会通过身份框架存储库创建一个 AppUser
,然后存储字段我的自定义 Person
在同一数据库记录中 ?
请注意,AppUser 上的 Person 继承已通过代码优先解决为单个 table 继承:相同的 table 存储 AppUser 和 Persons,并生成了一个判别字段。
您创建了一个自定义管理器 class,它扩展了身份框架提供的用户管理器 class。这个新的 CustomUserManager class 将具有 UserManager class 的所有功能,加上您要实现的用于添加 Person
的新功能