在ASP.Net MVC6身份框架中实现继承

时间:2016-03-03 14:41:54

标签: c# ef-code-first asp.net-identity asp.net-core-mvc

我目前正在开发ASP.Net 5 / ASP.Net MVC 6应用程序。我使用EntityFramework 7作为ORM框架,以及Code-first方法。 在我的模型中,我有以下内容:

  • AppUser类,继承自IdentityUser<int>IdentityUser是通过Microsoft.AspNet.Identity.EntityFramework包提供的,并允许通过从主键指定数据类型来继承所提供的类,当然,还可以向其中添加自定义字段。一切都正常(数据库架构,插入,...)
  • 继承自前一个的Person类,并添加一些特定于应用程序的字段和逻辑。基本上,我的想法是我的应用程序中的每个人都是潜在用户,但不是每个用户都需要成为一个人。

对于我的所有模型对象,我实现了一个通用存储库方法,该方法基本上为每个模型类实现了通用CRUD操作,并允许用户覆盖特定域类的通用方法。

但是对于AppUser类,ASP.Net Identity框架附带了自己的存储库,它基本上允许用户添加用户,向用户添加角色,检查登录的单一性等等......

我的问题是:我如何一起使用这两个存储库,这样当我添加Person时,它会通过Identity框架存储库创建一个AppUser,然后存储我自定义的字段Person在同一个数据库记录中?

请注意,AppUser上Person的继承已通过代码优先解析为单表继承:同一个表存储AppUser和Persons,并生成判别字段。

1 个答案:

答案 0 :(得分:1)

您创建了一个自定义管理器类,它扩展了Identity框架提供的usermanger类。这个新的CustomUserManager类将具有UserManager类的所有功能,以及您要为添加Person实现的新功能