c# – 实体框架不保存对数据库的更改
我很困惑为什么这个代码不起作用,它应该在循环之后保存对数据库的更改但是当我将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条记录不起作用,任何解决方案? 解决方法
此代码无法完全解决您的问题,这是您的问题的一些考虑因素.
注意:这在添加1200条记录和300条修改时适用于我 static async Task<bool> StartExport() { using (var db = new Entities()) { var appraisals = await db.Appraisals.ToListAsync(); db.Database.CommandTimeout = 300; //Disabling auto detect changes enabled will bring some performance tweaks db.Configuration.AutoDetectChangesEnabled = false; foreach (var appraisal in appraisals.Where(g => g.Id > 1)) { if (appraisal.Id == 10) { appraisal.AppraisalName = "New name"; db.Entry(appraisal).State = EntityState.Added; } else { appraisal.AppraisalName = "Modified name"; db.Entry(appraisal).State = EntityState.Modified; } } db.Configuration.AutoDetectChangesEnabled = true; if (await db.SaveChangesAsync() > 1) return true; else return false; } }
在您的情况下,您不希望将entites标记为已修改,EF已经很好地跟踪它. Entity Framework – Why explicitly set entity state to modified?
在这里,我们将所有实体附加到上下文本身 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |