Register.cshtml、Login.cshtml、Logout.cshtml、Manage/Index.cshtml など、/Areas/Identity/Pages/Accountフォルダ配下にあるいずれのRazorページでも、RazorページのコントローラーにDbContext(IdentityDbContext継承クラス)を追加することで、MVCコントローラーのようにDbContextを使用して、ユーザー認証時に独自のDB処理を加えることが出来る。
MVCコントローラーの場合
1 2 3 4 5 6 7 8 9 10 |
public class HomeController : Controller { private readonly ApplicationDbContext _context; public HomeController(ApplicationDbContext context) { _context = context; } |
下記はRazorページのコントローラーにDbContextを追加した例。
before Register.cshtml.cs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
[AllowAnonymous] public class RegisterModel : PageModel { private readonly SignInManager<IdentityUser> _signInManager; private readonly UserManager<IdentityUser> _userManager; private readonly ILogger<RegisterModel> _logger; private readonly IEmailSender _emailSender; public RegisterModel( UserManager<IdentityUser> userManager, SignInManager<IdentityUser> signInManager, ILogger<RegisterModel> logger, IEmailSender emailSender) { _userManager = userManager; _signInManager = signInManager; _logger = logger; _emailSender = emailSender; } |
after Register.cshtml.cs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
[AllowAnonymous] public class RegisterModel : PageModel { private readonly ApplicationDbContext _context; private readonly SignInManager<IdentityUser> _signInManager; private readonly UserManager<IdentityUser> _userManager; private readonly ILogger<RegisterModel> _logger; private readonly IEmailSender _emailSender; public RegisterModel( ApplicationDbContext context, UserManager<IdentityUser> userManager, SignInManager<IdentityUser> signInManager, ILogger<RegisterModel> logger, IEmailSender emailSender) { _context = context; _userManager = userManager; _signInManager = signInManager; _logger = logger; _emailSender = emailSender; } |
下記は DbContext(Entity Framework Core)からストアドプロシージャを実行した例。
Insert、Update系のストアドプロシージャを実行する場合。
1 2 3 4 5 6 |
_context.Database .ExecuteSqlCommand("EXECUTE usr.spUserSetting_Insert @No, @BackgroundColor", new SqlParameter("@No", No), new SqlParameter("@BackgroundColor", color)); |
Select系のストアドプロシージャを実行する場合。
1 2 3 4 5 6 |
var a = _context.UserSetting .FromSql("EXECUTE usr.spUserSetting_Select @No", new SqlParameter("@No", No)) .ToList(); |
コメント