1. 程式人生 > >記開發個人圖書收藏清單小程序開發(八)初始化書房信息修改

記開發個人圖書收藏清單小程序開發(八)初始化書房信息修改

pan errors configure not ref del rep model res

因為之前邏輯設計有點小問題,所以修改了一下:

增加core._User的Table:

1 CREATE TABLE [core].[_User]
2 (
3     [ID]       INT         NOT NULL PRIMARY KEY, 
4     [StringID] VARCHAR(36) NOT NULL,
5     CONSTRAINT [FK_User_Party] FOREIGN KEY ([ID]) REFERENCES [core].[_Party] ([ID])
6 )

在Web端需要傳入StringID(也即微軟Identity自動生成的AspNetUsers Table的ID)。

WebUI的Project增加Service:

/Services/UserManagerService.cs

 1     public class UserManagerService : UserManager<IdentityUser>
 2     {
 3         public UserManagerService(IUserStore<IdentityUser> store
 4             , IOptions<IdentityOptions> optionsAccessor
 5             , IPasswordHasher<IdentityUser> passwordHasher
6 , IEnumerable<IUserValidator<IdentityUser>> userValidators 7 , IEnumerable<IPasswordValidator<IdentityUser>> passwordValidators 8 , ILookupNormalizer keyNormalizer 9 , IdentityErrorDescriber errors 10 , IServiceProvider services
11 , ILogger<UserManager<IdentityUser>> logger) 12 : base(store, optionsAccessor, passwordHasher, userValidators, passwordValidators, keyNormalizer, errors, services, logger) 13 { 14 } 15 16 }

當然,也需要在Startup.cs文件的ConfigureServices中增加依賴註入:

1 services.AddScoped<UserManagerService>();

修改Init.cshtml.cs中的部分:

 1     using M = Shelf;
 2     public class InitModel : PageModel
 3     {
 4         private readonly IShelfRepo _shelfRepo;
 5         private readonly UserManagerService _userManagerService;
 6         public InitModel(IShelfRepo shelfRepo
 7             , UserManagerService userManagerService)
 8         {
 9             _shelfRepo = shelfRepo;
10             _userManagerService = userManagerService;
11         }
12         [BindProperty]
13         public InitInputModel Input { get; set; }
14 
15         public void OnGet()
16         {
17 
18         }
19 
20         public async Task<IActionResult> OnPostAsync()
21         {
22             if (ModelState.IsValid)
23             {
24                 await _shelfRepo.InitAsync(new M.InitSpec
25                 {
26                     StringID = _userManagerService.GetUserId(User),
27                     NickName = Input.NickName.Trim(),
28                     ShelfName = Input.ShelfName.Trim()
29                 });
30                 return RedirectToPage("New");
31             }
32             return Page();
33         }
34     }

主要是第26行。對應的給InitSpec Model也增加StringID的字段。

好了,現在BL DB和登錄信息關聯上了。

記開發個人圖書收藏清單小程序開發(八)初始化書房信息修改