Я пытаюсь создать журнал электронной почты при отправке электронного письма.
Я создал цикл foreach для добавления записей в базу данных.
Однако я могу добавить только одну запись, когда await _context.SaveChangesAsync();
находится вне цикла.
Если я поместил await _context.SaveChangesAsync();
внутрь, я получаю следующую ошибку:
SqlException: Невозможно вставить явное значение для столбца идентификаторов в таблице 'EmailLog', когда для IDENTITY_INSERT установлено значение OFF
Код:
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");
}