存储库模式,迁移和首次用户创建

时间:2016-11-28 19:36:53

标签: asp.net asp.net-mvc asp.net-mvc-5 repository-pattern

当前项目:

  • ASP.NET 4.5.2
  • MVC 5
  • EF 6

因此我首先使用正式的存储库模式(而不是坚持使用内置的EF6模式)是因为我正在构建一个多个站点需要了解,使用和更新单个数据库;包括用户注册和管理。因此,我需要将站点的整个数据结构(包括Identity)剥离到自己的项目中,以便所有项目都可以引用单个数据结构。由于这只是完全存储库模式的两个抖动,我决定实现一个。

经过多次错误启动后,I found a most excellent one that also allowed me to implement shared Identity across all projects

我甚至更进一步,并设法完全启动并运行迁移。请注意:我可以毫无问题地将模型推送到数据库。

我的问题在于初始化第一个用户。由于尚未构建管理界面,因此通常通过向Migration configuration.cs文件添加代码来完成此操作。不幸的是,我传统上使用的不再具有功能,因为,

Cannot convert from ApplicationDbContext to IUnitOfWork

现在,在迁移文件中添加大多数数据应该非常简单,我明白了。但是,添加用户更加困难,因为您必须通过站点的UserManager和RoleManager部分,尤其是能够生成要添加到数据库的密码哈希。当我们自己调用RoleManager和UserManager时,我的问题是正确的:

protected override void Seed(ApplicationDbContext context) {
  var roleManager = new RoleManager<IdentityRole, Guid>(new Store.RoleStore<IdentityRole, Guid>(context));

因为它使用了IUnitOfWork,所以我不能只插入通过Seed引入的ApplicationDbContext并使用它运行。不幸的是,我也完全陷入了如何继续 - 这个问题对我来说是全新的,如果答案很简单,我就不会以正确的方式看待它。

0 个答案:

没有答案