public bool Action(CancellationToken ct) { if (ct.IsCancellationRequested) { return(false); } if (IEnumerableEx.IsNullOrEmpty(targetUsers)) { using (var db = new GameDbContext(dbo_game)) { db.Database.ExecuteSqlRaw( "INSERT INTO `game_mails`(`userid`, `typeid`, `title`, `message`, `sentdate`, " + "`item1id`, `item2id`, `item3id`, `item4id`, `item5id`, `item1cnt`, `item2cnt`, `item3cnt`, `item4cnt`, `item5cnt`) " + "SELECT `id`, {0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}, {8}, {9}, {10}, {11}, {12}, {13} FROM `game_users`", (int)mail.typeid, mail.title, mail.message, mail.sentdate.ToDBFormatString(), mail.item1id, mail.item2id, mail.item3id, mail.item4id, mail.item5id, mail.item1cnt, mail.item2cnt, mail.item3cnt, mail.item4cnt, mail.item5cnt); db.agent_events.Add(AgentEvent.Create(AgentEvent.TypeID.MailCreateAll)); db.SaveChanges(); } } else { var mails = new List <GameUser.Mail>(); foreach (var userid in targetUsers) { var newmail = new GameUser.Mail(); DataMapping.Copy(mail, newmail); newmail.userid = userid; mails.Add(newmail); } using (var db = new GameDbContext(dbo_game)) { db.ChangeTracker.AutoDetectChangesEnabled = false; db.game_mails.AddRange(mails); db.ChangeTracker.AutoDetectChangesEnabled = true; if (ct.IsCancellationRequested) { return(false); } db.SaveChanges(); db.agent_events.Add(AgentEvent.Create(AgentEvent.TypeID.MailCreate, mails.First().id, mails.Last().id)); db.SaveChanges(); } } return(true); }