带有实体框架的 ASP.NET MVC Core 项目中的种子角色
Posted
技术标签:
【中文标题】带有实体框架的 ASP.NET MVC Core 项目中的种子角色【英文标题】:Seed roles in an ASP.NET MVC Core project with Entity Framework 【发布时间】:2017-09-20 04:48:39 【问题描述】:当我最初创建数据库时,我正在尝试将一些角色植入我的身份数据库上下文。
为此,我尝试实现此处所述的代码: https://***.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 post 和 MusicStore
为我工作。就像你说的,你可以使用 IServiceCollection 来检索你的 UserManager 和 RoleManager。
【参考方案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中添加了,是不是每次请求都会执行? 是的,但您也可以检查是否需要运行迁移,这将最小化实例化代码。以上是关于带有实体框架的 ASP.NET MVC Core 项目中的种子角色的主要内容,如果未能解决你的问题,请参考以下文章
带有实体框架的 ASP.Net Core Web API 使用存储过程有啥好处吗? [关闭]
使用带有实体框架代码优先和 ASP.NET MVC 3 和 mvc miniprofiler 的 SQL Server CE 时出现问题
实体框架探查器 - 带有 EF 6 的 ASP.NET MVC4 - 无法确定提供程序名称
带有实体框架和 SQL Server 数据库的 ASP.NET MVC - 图像未显示在视图中......错误显示“无法将“字节”转换为“字符串”