public ActionResult Find(string FromDate, string ToDate) { var fdt = FromDate.ToDate(); var tdt = ToDate.ToDate(); string host = Util.Host; var runningtotals = new DuplicatesRun { Started = DateTime.Now, Count = 0, Processed = 0, Found = 0 }; DbUtil.Db.DuplicatesRuns.InsertOnSubmit(runningtotals); DbUtil.Db.SubmitChanges(); Alias.Task.Factory.StartNew(() => { Thread.CurrentThread.Priority = ThreadPriority.Lowest; var Db = DbUtil.Create(host); var rt = Db.DuplicatesRuns.OrderByDescending(mm => mm.Id).First(); Db.ExecuteCommand("delete duplicate"); var q = from p in Db.People where p.CreatedDate > fdt where p.CreatedDate < tdt.Value.AddDays(1) select p.PeopleId; rt.Count = q.Count(); Db.SubmitChanges(); foreach(var p in q) { var pids = Db.FindPerson4(p); rt.Processed++; Db.SubmitChanges(); if (pids.Count() == 0) continue; foreach(var pid in pids) Db.InsertDuplicate(p, pid.PeopleId.Value); rt.Found++; } rt.Completed = DateTime.Now; Db.SubmitChanges(); }); return Redirect("/Duplicates/Progress"); }
public ActionResult Find(string fromDate, string toDate) { var fdt = fromDate.ToDate(); var tdt = toDate.ToDate(); string host = Util.Host; var runningtotals = new DuplicatesRun { Started = DateTime.Now, Count = 0, Processed = 0, Found = 0 }; DbUtil.Db.DuplicatesRuns.InsertOnSubmit(runningtotals); DbUtil.Db.SubmitChanges(); HostingEnvironment.QueueBackgroundWorkItem(ct => { var db = DbUtil.Create(host); var rt = db.DuplicatesRuns.OrderByDescending(mm => mm.Id).First(); db.ExecuteCommand("delete duplicate"); var q = from p in db.People where p.CreatedDate > fdt where p.CreatedDate < tdt.Value.AddDays(1) select p.PeopleId; rt.Count = q.Count(); db.SubmitChanges(); foreach(var p in q) { var pids = db.FindPerson4(p); rt.Processed++; db.SubmitChanges(); if (!pids.Any()) continue; foreach(var pid in pids) if (pid.PeopleId != null) db.InsertDuplicate(p, pid.PeopleId.Value); rt.Found++; } rt.Completed = DateTime.Now; db.SubmitChanges(); }); return Redirect("/Duplicates/Progress"); }