【发布时间】:2021-11-21 07:44:37
【问题描述】:
我遇到了将 UserId 属性从我的 ApplicationUser 添加到域 Player 实体的问题。
这是我的域实体 Player,我有虚拟 ApplicationUserId 属性。 在 UserService 中创建 User 后,我有一个想法写 UserId,但由于 setter 的保护级别而无法继续。我应该更改删除保护级别还是有其他方法来获得结果?
也许我应该在像 SetUserId 这样的域中创建一个方法,在那里我将使用来自 IdentityServer.CreateUser 的 UserId 设置私有属性?好方法吗?
public class Player: MyEntity
{
public string UserName { get; private set; }
public virtual Guid ApplicationUserId { get; private set; }
private Player()
{ }
}
UserService.cs sn-p 用户正在创建的位置
public async Task<(AppSignInResult result, SignInData data)> CreateUser(string username, string password, string email, string country)
{
var user = new ApplicationUser() { UserName = username, Email = email};
var result = await _userManager.CreateAsync(user, password);
...
// here is call of mediatr command
var command = new CreatePlayerCommand(username, country);
var id = await _mediator.Send(command);
...
return ...
}
CreatePlayerCommand.Handle 处理程序代码
public async Task<int> Handle(CreatePlayerCommand request, CancellationToken cancellationToken)
{
var player = new Player(
request.userName);
_unitOfWork.Players.Add(player);
await _unitOfWork.SaveChanges();
return player.Id;
}
【问题讨论】:
标签: c# .net domain-driven-design identityserver4