首页 > 解决方案 > 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");
}

标签: razorentity-framework-coreasp.net-core-2.0

解决方案


推荐阅读