正如我從具有上下文MICSYDBCONTEXT
的數據庫向具有BRIA_REALDBCONTEXT
的數據庫導入數據。針對導入優化實體框架查詢
由於在MICSYDBCONTEXT
數據庫中有280'000條記錄,我看到只需要5個小時就導入10000條記錄,所以我非常需要某種優化我的查詢。我正在使用Entity Framework 6,並且作爲初級開發人員,我會很感激任何幫助。
using (var context = new MICSYDBContext())
{
var Doc = context.DOCUMENTS.OrderBy(x => x.ID).Take(100);
try
{
using (var context2 = new BRIA_REALDBCONTEXT())
{
Stopwatch sw = Stopwatch.StartNew();
foreach (var item in Doc)
{
var DOC = new DLV_DOC();
DOC.FOLDID = item.ID;
DOC.FOBJECT = 1;
DOC.FIO = 40;
DOC.FID = newId;
DOC.FACTIVE = "Y";
DOC.FCODEWRT = 85;
DOC.FDOC_COUNT_ORIGINAL = 'N';
DOC.FUSERINSERT = 85;
DOC.FMODULE = 1;
DOC.FSERVICE_TYPE = 1;
var micsysserviceName = context.DEFDOCTYPE.Where(x => x.ID == item.DOCTYPE).FirstOrDefault();
if (micsysserviceName != null)
{
var service = context2.DLV_SSERVICE.Where(x => x.FNAME == micsysserviceName.NAME && x.FSERVICE_TYPE == 1).FirstOrDefault();
if (service != null)
{
DOC.FSERVICE = service.FID;
}
}
else
{
DOC.FSERVICE = 1;
}
var personcorespondent = context2.UCM_PERSON.Where(x => x.FOLD_ID == item.DOCKORID.ToString()).FirstOrDefault();
if (personcorespondent != null)
{
DOC.FPERSON = personcorespondent.FID;
}
else
{
DOC.FPERSON = 142;
}
DOC.FDATEDOC = item.DATA;
foreach (var docsteps in context.DOCMOVE.Where(x => x.DOCID == item.ID).OrderBy(x => x.DATA))
{//СТъпка
DLV_DOC_STEP DLVSTEP = new DLV_DOC_STEP();
DLVSTEP.FDOC = DOC.FID;
DLVSTEP.FOBJECT = 1;
DLVSTEP.FCODEWRT = 85;
var whofirst = context2.UCM_PERSON.Where(x => x.FOLD_ID == docsteps.WHOFIRST.ToString()).FirstOrDefault();
if (whofirst != null)
{
DLVSTEP.FPERSON = whofirst.FID;
}
var whonext = context2.UCM_PERSON.Where(x => x.FOLD_ID == docsteps.WHONEXT.ToString()).FirstOrDefault();
if (whonext != null)
{
DLVSTEP.FTOPERSON = whonext.FID;
}
context2.DLV_DOC_STEP.Add(DLVSTEP);
}
context2.DLV_DOC.Add(DOC);
i++;
Console.WriteLine("Added " +i + "DOC");
}
context2.SaveChanges();
Console.WriteLine("End of docs");
Console.WriteLine(sw.Elapsed.Hours);
}
}
catch (Exception ex)
{
string s = ex.Message;
Console.WriteLine("Problem with record");
Console.WriteLine(ex.Message);
Console.WriteLine(ex.StackTrace);
Console.WriteLine(ex.InnerException);
}
}
您想訂購28萬條記錄。這將需要一段時間。 –