0

我創建了一個全新的ASP.Net核心Web應用程序,並啓用了身份識別服務。該框架有助於爲我創建許多視圖和視圖模型,以處理創建,驗證和移除用戶的任務;然而,我對這個EF組件有些困惑(我對EF來說是個新手,所以我可能會錯過一些東西)。EntityFrameworkCore Identity

的的AccountController已UserManager<ApplicationUser> userManager注入到它,例如,用於創建帳戶,要求是這樣的:

var result = await _userManager.CreateAsync(user, model.Password); 

據我瞭解這是什麼做的,它是內Microsoft.AspNetCore.Identity呼叫功能,地圖(直接)到數據庫中的表(默認爲dbo.ASPNetUsers - 或類似的)。通常情況下,我希望這樣的功能位於與數據庫通信的服務中;這提供了一個抽象層和數據庫的網關。

我的問題是,上述功能是否在某種意義上給出了同樣的東西,或者我們是否有效地直接與網站上的數據庫通信?

回答

1

UserManager依賴於IUserStore接口,其中有一個實現使用EFCore注入UserManager。也可以對各種接口進行其他實現。所以存在分層,UserManager不直接與數據庫通信,而是與服務接口進行通信。

偉大的事情是它是所有的開源所以如果你想看看事情如何工作,你可以很容易https://github.com/aspnet/Identity/tree/dev/src