C# 如何在使用UserManager标识创建用户时插入从属记录?
我正在使用UserManager模式的标识。 当我需要创建一个新用户时,帐户控制器的注册操作有以下代码C# 如何在使用UserManager标识创建用户时插入从属记录?,c#,asp.net-mvc,asp.net-identity,business-rules,C#,Asp.net Mvc,Asp.net Identity,Business Rules,我正在使用UserManager模式的标识。 当我需要创建一个新用户时,帐户控制器的注册操作有以下代码 var user = new WebUser() { UserName = model.Email, Email = model.Email, CreatedOn = DateTime.Now, FullName = model.Email, EmailConfirmed = true }; IdentityResult result = await RegisterService.Creat
var user = new WebUser() { UserName = model.Email, Email = model.Email, CreatedOn = DateTime.Now, FullName = model.Email, EmailConfirmed = true };
IdentityResult result = await RegisterService.CreateAsync(user, model.Password);
if (!result.Succeeded && ((string[])result.Errors).Length > 0)
{
foreach (var erro in result.Errors)
{
ModelState.AddModelError("", erro);
}
return BadRequest(ModelState);
}
else if (!result.Succeeded)
return InternalServerError();
现在它是有效的,但我的规则需要一些具体的东西。我数据库中的每个用户都需要在其他表中有一条记录。我如何实现它?
我觉得将“如果成功将记录创建到另一个表中”这样的规则放入控制器是错误的,因为我需要控制器中的事务作用域。我觉得这听起来很脏。
有人能帮我吗?什么?这是控制器应该处理的我不知道。。。我所有的控制器都只处理表单数据的规则,比如如果所有需要的东西都来了(ModelState),然后我将viewmodel转换成一个模型,并将其发送到服务层(业务逻辑),服务层必须检查数据是否正常(比如它是否唯一并遵循规则)。在这之后,我的服务层执行逻辑,将数据保留在数据库中(插入/更新/删除链)。每个服务都有自己的逻辑来保存数据,而不是控制器。如果我有一个API和MVC控制器,逻辑将被复制,我认为它不正确。只需重写RegisterService.CreateAsync()方法并在那里添加自定义逻辑。