首页 > 解决方案 > 在循环内将数据插入数据库时​​,有没有办法使 foreach 循环更快?

问题描述

我正在为foreach循环内的每个成员将消息插入数据库,这使得应用程序变慢,因为它将运行 200 多次为每个成员添加消息。我试图使它成为并行foreach循环,但这会在保存数据时抛出连接错误,并且我有多个foreach循环。

有人来帮忙吗?

foreach (var item in coachee)
    {
        MessageRecord MsgRecord = new MessageRecord();
        MsgRecord.MessageID = msgID;
        MsgRecord.CoachID = coachID;
        MsgRecord.CoacheeID = item.CoacheeIdentityID;
        MsgRecord.CreatedBy = Session["user"].ToString();
        MsgRecord.IsActive = 1;
        MsgRecord.CreatedDate = DateTime.Now;
        message.DocumentPath = DocumentPath;

        bool val = await _repoObjCoach.AddMessageRecordForCoacheeasync(MsgRecord);
        if (val)
        {

            coacheeMails.Add(item.EmailID);
            if (item.Parent_Email != null)
            {
                ParentMails.Add(item.Parent_Email);
            }
            if (item.PhoneMail != null)
            {
                PhoneMails.Add(item.PhoneMail);
            }
           
        if (Convert.ToInt32(Session["Role"]) == ConstantData.Role.Coach)
        {
            _repoObjCoach.MessageCreatedNotification(MessageCreatedByCoach.Coachee + Session["user"].ToString(), string.Concat(LinkPageMessageCreated.coachee, item.UserID.ToString()), "", item.CoacheeIdentityID);
        }
        else
        {
            _repoObjCoach.MessageCreatedNotification(MessageCreatedByCoach.alternateCoachee + Session["user"].ToString(), string.Concat(LinkPageMessageCreated.coachee, item.UserID.ToString()), "", item.CoacheeIdentityID);
        }
    }
}

标签: c#jquery.nettask-parallel-libraryparallel.foreach

解决方案


推荐阅读