我很困惑,为什么这段代码不工作,它应该在循环后保存对数据库的更改,但是当我将SaveChanges
方法放入循环中时,它会将记录保存到数据库中但在外面不保存任何东西?它是关于只有300〜1000条记录实体框架不保存更改到数据库
static bool lisReady = false;
static bool sacclReady = false;
static void Main(string[] args)
{
Logger("Starting services");
ConnectDBLis().Wait();
ConnectDBSaccl().Wait();
Thread.Sleep(1000);
if (lisReady & sacclReady){
//start
Logger("Services ready");
StartExport().Wait();
}
}
static async Task<bool> StartExport()
{
lis lisdb = new lis();
nrlsaccl saccldb = new nrlsaccl();
var getTestOrders = await lisdb.test_orders.ToListAsync();
Logger("Services starting");
foreach (var tO in getTestOrders.Where(x => x.entry_datetime.Value.Year == 2016))
{
foreach (var tr in tO.test_results)
{
foreach (var tL in tr.test_result_logs)
{
results_availability postResults = new results_availability
{
first_name = tO.patient_orders.patient.first_name,
middle_name = tO.patient_orders.patient.middle_name,
last_name = tO.patient_orders.patient.last_name,
birthdate = tO.patient_orders.patient.birthdate,
};
if (postResults.id == 0)
{
saccldb.results_availability.Add(postResults);
}
else
{
saccldb.Entry(postResults).State = EntityState.Modified;
}
}
}
}
await saccldb.SaveChangesAsync();
return true;
}
编辑:
所以我限制记录100和保存更改工作,3000条记录在时刻不起作用,任何解决方案?
我更新了帖子。 –
'savechangesasync'有任何错误。我已经在我的本地复制了上面的代码,似乎对我来说工作正常 – Eldho
@Eldho我没有收到任何错误,我在savechanges上放置了一个断点,它能击中它,你能告诉我你的代码吗? –