razor - asp.net razor core 在帖子上插入多条记录
问题描述
我尝试在发送电子邮件时创建电子邮件日志。
我创建了一个 foreach 循环来将记录添加到数据库中。
await _context.SaveChangesAsync();
但是,当它在循环之外时,我只能让它添加一条记录。
如果我放在await _context.SaveChangesAsync();
里面,我会收到以下错误。
SqlException:当 IDENTITY_INSERT 设置为 OFF 时,无法在表“EmailLog”中插入标识列的显式值
代码:
public async Task<IActionResult> OnPostAsync(IEnumerable<int> emailuser)
{
//get login user
var claimsIdentity = (ClaimsIdentity)this.User.Identity;
var claim = claimsIdentity.FindFirst(ClaimTypes.Name);
var TestAimItem = _context.AimItem.Where(x => emailuser.Contains(x.Id)).ToList();
foreach (var item in TestAimItem.GroupBy(item => item.Email))
{
EmailMessage = await _context.EmailMessage.SingleOrDefaultAsync(m => m.Id == 2);
string EmailAddress = (item.Key);
var emailMessage1 = EmailMessage.MessageBody.Replace(Environment.NewLine, "<br/>");
var linkHtml = "<a href=" + '"' + "https://" + EmailMessage.Link + '"' + ">here</a>";
var emailMessage2 = emailMessage1.Replace("HPWDLINK", "click " + linkHtml);
var emailMessage3 = emailMessage2.Replace("HPWDUSEREMAIL", EmailAddress);
var emailMessage4 = HttpUtility.HtmlDecode(emailMessage3);
await _emailSender.SendEmailAsync(To, EmailMessage.MessageSubject, emailMessage4);
}
foreach (var item1 in TestAimItem)
{
EmailLog.EmailDate = DateTime.Now;
EmailLog.MessageId = 2;
EmailLog.SentTo = item1.Email;
EmailLog.SentBy = claim.Value;
//submit record
_context.EmailLog.Add(EmailLog);
//await _context.SaveChangesAsync();
}
await _context.SaveChangesAsync();
return RedirectToPage("/UserReporting/EmailUsersAnnualReport");
}
解决方案
推荐阅读
- php - 验证数组中的重复字段
- pine-script - 绘制自定义数据 - 每日 = 正常,每周 = 不正常
- python - 使用下拉小部件,从一列中选择值,从数据框中的另一列返回值
- tensorflow - TypeError:“int”对象不可下标(imblearn 生成器)
- dataframe - Pyspark 获取每天的最后一个日期时间
- webrtc - 第二个 RTCPeerConnection 卡在“正在连接”状态,而第一个连接成功连接
- android - bindCameraUseCases() 的回调
- javascript - 有没有办法在没有机器人的情况下在 node.js 中接收电报消息?
- sql-server - SSMS 18 和 VS Community 2019 未识别 SSIS 已安装
- google-cloud-platform - Google Cloud Platform 上的 API 管理