我创建了一个全新的ASP.Net Core Web应用程序,并启用了身份服务。该框架有助于创建一些视图和视图模型,以处理创建,验证和删除用户的任务;但是,我对这个EF组件有点困惑(我是EF的新手,所以我可能会遗漏一些东西)。
AccountController注入了UserManager<ApplicationUser> userManager
,例如,为了创建帐户,会调用以下内容:
var result = await _userManager.CreateAsync(user, model.Password);
据我了解这是做什么的,它调用Microsoft.AspNetCore.Identity
内的函数(直接)映射到DB中的表(默认为dbo.ASPNetUsers - 或类似)。通常,我希望这种功能可以放在与DB通信的服务中;这提供了一个抽象层和数据库的网关。
我的问题是,上述功能在某种意义上是否提供相同的功能,或者我们是否有效地直接与网站上的数据库进行通信?
答案 0 :(得分:1)
UserManager依赖于IUserStore接口,其中有一个实现使用EFCore注入UserManager。还可以进行各种接口的其他实现。因此存在分层,UserManager不是直接与数据库对话而是与服务接口进行对话。
最棒的是它是全部开源的,所以如果你想看看事情是如何运作的,你很容易https://github.com/aspnet/Identity/tree/dev/src