【问题标题】:Seed roles in an ASP.NET MVC Core project with Entity Framework带有实体框架的 ASP.NET MVC Core 项目中的种子角色
【发布时间】:2017-09-20 04:48:39
【问题描述】:

当我最初创建数据库时,我正在尝试将一些角色植入我的身份数据库上下文。

为此,我尝试实现此处所述的代码: https://stackoverflow.com/a/29547994/985798

我在我的 Startup 类中的 ConfigureServices 方法中尝试了这个: public void ConfigureServices(IServiceCollection 服务)

使用这个 sn-p:

var rolestore =
    new Microsoft.AspNetCore.Identity.EntityFrameworkCore.
        RoleStore<Microsoft.AspNetCore.Identity.EntityFrameworkCore.IdentityRole>(identityContext);

var roleManager = new Microsoft.AspNetCore.Identity.RoleManager
                  <Microsoft.AspNetCore.Identity.EntityFrameworkCore.IdentityRole>(rolestore);

//use rolemanager to insert roles etc.

问题是,它似乎不适用于使用 Visual Studio 2017 创建的新核心项目。

它给了我以下构建错误:

CS7036 没有给出与所需参数对应的参数 形参 'roleValidators' 的 'RoleManager.RoleManager(IRoleStore, IEnumerable>,ILookupNormalizer, IdentityErrorDescriber, ILogger>, IHttpContextAccessor)'

即使我使用其他重载(其他参数为空值),RoleManager 似乎也没有“创建”方法了。

所以,我被困在这一点上。我需要做什么?角色管理器的 ASP.NET MVC Core 实现有什么变化吗?我用错了吗?

【问题讨论】:

  • 编译后,执行 Seed() 可能会出现问题。计划用于 EfCore 2.0 的 Afaik。
  • 你到底是什么意思?在启动内部运行它应该可以正常工作,不是吗?我知道,这可能不是最好的地方,但我认为它应该可以工作。
  • 代替“newing” RoleManager 尝试在Configure 方法中解决它。 Similar postMusicStore
  • 为我工作。就像你说的,你可以使用 IServiceCollection 来检索你的 UserManager 和 RoleManager。

标签: c# asp.net-core-mvc entity-framework-core


【解决方案1】:
using Microsoft.AspNetCore.Identity;
using Microsoft.AspNetCore.Identity.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;

public static class Seed
{
    public static void Initialize(IServiceProvider provider)
    {
        var _context = provider.GetRequiredService<ApplicationDbContext>();
        var userManager = provider.GetRequiredService<UserManager<ApplicationUser>>();
        var roleManager = provider.GetRequiredService<RoleManager<IdentityRole>>();


    }
}

然后下面Configure()startup.cs中的大部分代码

Seed.Initialize(app.ApplicationServices);

HTH(希望有帮助)。

【讨论】:

  • 谢谢,HTH 是什么意思?
  • HTH(希望有帮助)
  • 如何在非异步方法中处理异步调用的等待?
  • 如果你在Configure中添加了,是不是每次请求都会执行?
  • 是的,但您也可以检查是否需要运行迁移,这将最小化实例化代码。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-17
  • 1970-01-01
  • 2023-03-22
  • 1970-01-01
  • 2021-08-15
  • 2014-03-20
相关资源
最近更新 更多