manit44
جمعه 24 خرداد 1398, 02:33 صبح
با سلام
من در entity framework با خطای زیر مواجه میشم - دلیل بروز این خطا چیه؟ و چطور باید برطرفش کنم؟ البته من دو تا context یکسان که برای دو دیتابیس مختلف هست.
The ObjectContext instance has been disposed and can no longer be used for operations that require a connection
اینم کدمه:
private int MoveWorkFlowInstanceForObject(string objectId) {
List<WORKFLOWINSTANCE> objectWorkFlowInstance = GetWorkFlowInstanceForObject(objectId);
int resultCode = 0;
if (resultCode != 0)
{
return resultCode;
}
using (var Real = new DBModelReal())
{
using (var Test = new DBModelTest())
{
foreach (WORKFLOWINSTANCE oneWorkFlowInstance in objectWorkFlowInstance.ToList())
{
try
{
if (!Test.WORKFLOWINSTANCEs.Any(c => c.ID == oneWorkFlowInstance.ID))
{
Test.WORKFLOWINSTANCEs.Add(oneWorkFlowInstance);
Test.SaveChanges();
}
foreach (WORKFLOWACTIVITYINSTANCE oneWorkFlowActivityInstance in oneWorkFlowInstance.WORKFLOWACTIVITYINSTANCEs.ToLi st())
{
var copyWorkFlowActivityInstance = (WORKFLOWACTIVITYINSTANCE)Real.Entry(oneWorkFlowAc tivityInstance).CurrentValues.ToObject();
if (!Test.WORKFLOWACTIVITYINSTANCEs.Any(c => c.ID == copyWorkFlowActivityInstance.ID))
{
Test.WORKFLOWACTIVITYINSTANCEs.Add(copyWorkFlowAct ivityInstance);
Test.SaveChanges();
}
foreach (WORKFLOWINSTANCEWORKITEM oneWorkFlowInstanceWorkItem in oneWorkFlowActivityInstance.WORKFLOWINSTANCEWORKIT EMs.ToList())
{
if (oneWorkFlowInstanceWorkItem.WORKFLOWINSTANCEWORKI TEM2 != null)
{
var copyWorkFlowInstanceWorkItem = (WORKFLOWINSTANCEWORKITEM)Real.Entry(oneWorkFlowIn stanceWorkItem.WORKFLOWINSTANCEWORKITEM2).CurrentV alues.ToObject();
if (!Test.WORKFLOWINSTANCEWORKITEMs.Any(c => c.ID == copyWorkFlowInstanceWorkItem.ID))
{
Test.WORKFLOWINSTANCEWORKITEMs.Add(copyWorkFlowIns tanceWorkItem);
Test.SaveChanges();
}
}
else if (oneWorkFlowInstanceWorkItem.WORKFLOWINSTANCEWORKI TEM1.Count > 0)
{
var copyWorkFlowInstanceWorkItem = (WORKFLOWINSTANCEWORKITEM)Real.Entry(oneWorkFlowIn stanceWorkItem).CurrentValues.ToObject();
if (!Test.WORKFLOWINSTANCEWORKITEMs.Any(c => c.ID == copyWorkFlowInstanceWorkItem.ID))
{
Test.WORKFLOWINSTANCEWORKITEMs.Add(copyWorkFlowIns tanceWorkItem);
Test.SaveChanges();
}
}
}
}
}
catch (Exception)
{
statusStrip1.BackColor = Color.Red;
toolStripStatusLabel1.Text = GetWorkFlowErrorMessage(701, objectId);
}
}
}
}
return resultCode;
}
توی این قسمت خطا رو بهم میده:
foreach (WORKFLOWACTIVITYINSTANCE oneWorkFlowActivityInstance in oneWorkFlowInstance.WORKFLOWACTIVITYINSTANCEs.ToLi st())
ممنون میشم دوستان کمک کنند.
من در entity framework با خطای زیر مواجه میشم - دلیل بروز این خطا چیه؟ و چطور باید برطرفش کنم؟ البته من دو تا context یکسان که برای دو دیتابیس مختلف هست.
The ObjectContext instance has been disposed and can no longer be used for operations that require a connection
اینم کدمه:
private int MoveWorkFlowInstanceForObject(string objectId) {
List<WORKFLOWINSTANCE> objectWorkFlowInstance = GetWorkFlowInstanceForObject(objectId);
int resultCode = 0;
if (resultCode != 0)
{
return resultCode;
}
using (var Real = new DBModelReal())
{
using (var Test = new DBModelTest())
{
foreach (WORKFLOWINSTANCE oneWorkFlowInstance in objectWorkFlowInstance.ToList())
{
try
{
if (!Test.WORKFLOWINSTANCEs.Any(c => c.ID == oneWorkFlowInstance.ID))
{
Test.WORKFLOWINSTANCEs.Add(oneWorkFlowInstance);
Test.SaveChanges();
}
foreach (WORKFLOWACTIVITYINSTANCE oneWorkFlowActivityInstance in oneWorkFlowInstance.WORKFLOWACTIVITYINSTANCEs.ToLi st())
{
var copyWorkFlowActivityInstance = (WORKFLOWACTIVITYINSTANCE)Real.Entry(oneWorkFlowAc tivityInstance).CurrentValues.ToObject();
if (!Test.WORKFLOWACTIVITYINSTANCEs.Any(c => c.ID == copyWorkFlowActivityInstance.ID))
{
Test.WORKFLOWACTIVITYINSTANCEs.Add(copyWorkFlowAct ivityInstance);
Test.SaveChanges();
}
foreach (WORKFLOWINSTANCEWORKITEM oneWorkFlowInstanceWorkItem in oneWorkFlowActivityInstance.WORKFLOWINSTANCEWORKIT EMs.ToList())
{
if (oneWorkFlowInstanceWorkItem.WORKFLOWINSTANCEWORKI TEM2 != null)
{
var copyWorkFlowInstanceWorkItem = (WORKFLOWINSTANCEWORKITEM)Real.Entry(oneWorkFlowIn stanceWorkItem.WORKFLOWINSTANCEWORKITEM2).CurrentV alues.ToObject();
if (!Test.WORKFLOWINSTANCEWORKITEMs.Any(c => c.ID == copyWorkFlowInstanceWorkItem.ID))
{
Test.WORKFLOWINSTANCEWORKITEMs.Add(copyWorkFlowIns tanceWorkItem);
Test.SaveChanges();
}
}
else if (oneWorkFlowInstanceWorkItem.WORKFLOWINSTANCEWORKI TEM1.Count > 0)
{
var copyWorkFlowInstanceWorkItem = (WORKFLOWINSTANCEWORKITEM)Real.Entry(oneWorkFlowIn stanceWorkItem).CurrentValues.ToObject();
if (!Test.WORKFLOWINSTANCEWORKITEMs.Any(c => c.ID == copyWorkFlowInstanceWorkItem.ID))
{
Test.WORKFLOWINSTANCEWORKITEMs.Add(copyWorkFlowIns tanceWorkItem);
Test.SaveChanges();
}
}
}
}
}
catch (Exception)
{
statusStrip1.BackColor = Color.Red;
toolStripStatusLabel1.Text = GetWorkFlowErrorMessage(701, objectId);
}
}
}
}
return resultCode;
}
توی این قسمت خطا رو بهم میده:
foreach (WORKFLOWACTIVITYINSTANCE oneWorkFlowActivityInstance in oneWorkFlowInstance.WORKFLOWACTIVITYINSTANCEs.ToLi st())
ممنون میشم دوستان کمک کنند.