c# - 如何使用 Entity Framework Core 在同一个表中一次保存两个数据
问题描述
我正在创建推荐代码功能,用户将在注册时输入推荐代码,然后我从推荐代码中获取用户并在他的帐户上添加积分,同时我想为刚刚注册但我唯一的用户添加积分数据没有保存
我添加了添加积分的代码,其推荐代码正在使用另一个用户进行注册,还编写了为当前注册用户添加积分但无法同时为两个用户添加积分的代码
[HttpPost("register")]
public async Task<IActionResult> Register(UserForRegisterDto userForRegisterDto)
{
if (!string.IsNullOrEmpty(userForRegisterDto.Email))
{
userForRegisterDto.Email = userForRegisterDto.Email.ToLower();
if (await _repo.UserExists(userForRegisterDto))
return BadRequest("User For this mail/contact already exists" );
}
if(!string.IsNullOrEmpty(userForRegisterDto.ContactNo))
{
if (await _repo.UserExists(userForRegisterDto))
return BadRequest("User For this mail/contact already exists");
}
var userToCreate = _mapper.Map<User>(userForRegisterDto);
var createdUser = await _repo.Register(userToCreate, userForRegisterDto.Password);
int id = createdUser.Id;
var userToReturn = _mapper.Map<UserForDetailedDto>(createdUser);
if (userForRegisterDto.ReferralCode != null)
{
string message = "Congratulations you recieved 100 rs credit on your account";
var getUserByRefCode = await _repo.GetUserByReferralCode(userForRegisterDto.ReferralCode);
var getCurrentCreatedUser = await _repos.GetUser(id);
if (getUserByRefCode != null)
{
ReferralStatus status = new ReferralStatus()
{
Credits = 100,
OfferAddedOn = DateTime.UtcNow,
IsCreditsUsed = false,
ExpiresOn = DateTime.UtcNow.AddYears(1)
};
getUserByRefCode.ReferralStatus.Add(status);
getCurrentCreatedUser.ReferralStatus.Add(status);
await _repos.SaveAll();
return Ok(new { userToReturn, message });
}
}
return Ok(userToReturn);
}
解决方案
推荐阅读
- arrays - 数组中对应值的乘法
- css - 使用css文件样式化根元素,但不工作
- dashboard - 在 python 中使用破折号的 Web 应用程序
- scala - zipwithindex 获取 Rdd Key 并获取新的 RDD
- video-streaming - 使用 GStreamer 的“观看”目录并即时解码新的媒体文件
- python - 如何使用 statsmodels ARIMA 预测下一个值?
- reactjs - React hooks linting:它总是有意义吗?
- python - Cloud DataFlowRunner 中的 python-mysql?
- r - 使 R 中的等高线图更高效
- generics - 为什么这个带有泛型的 Kotlin 代码会产生类型不匹配编译器错误?