此博客用于在开发过程总bug及其解决方案的记录。
1。
异常信息: ObjectStateManager 中已存在具有同一键的对象。ObjectStateManager 无法跟踪具有相同键的多个对象。
错误分析:出现这种异常,就是在ef操作的过程中,有两个对象的主键相同了。网上有跳过这种检查的办法,但是这不是解决异常的根本 ,我们需要对代码进行分析。
错误代码:在foreach 里面循环生成可能是一个父对象的语句造成了此异常,从红色部分可以看出在循环中可能生成多个对象。
foreach (var l in changedContentList) { if (l.CL_Type == "0" || l.CL_Type == "1" || l.CL_Type == "2") { var parent = model.ContentList.SingleOrDefault(n => n.CL_ID == l.CL_OriginalID); parent.CL_Status = "0"; } model.ContentList.AddObject(l); } else { if (l.CL_Type == "3") { model.ContentList.AddObject(l); } } }
解决方案:知道了具体的原因我们在修改代码就简单的多了。 在循环的外面加以List 没生成一个父对象就把父对象存在list里面。在生成对象之前判断是否存在父对象。
2.Microsoft.Jet.OLEDB.4.0' provider is not registered on the local machine
excel导入数据库时,如果是在64位系统上,需要把主程序上的应用程序池改为可以以32位系统运行。