Написал программу которая копирует данные из одной базы в другую, выполняя с ними определенные действия. Все работает нормально, но когда я попытался работать с базой где более 5миллионов записей после обработки примерно половины данных она слетела с ошибкой System.Rubtime.InteropServices.COMException (0x8004150D) Outof server memory at ESRI.ArcGIS.Geodatabase.IWorkspaceEdit.StopEditing.
Данные с исходной базы читаются обычным запросом, после обработки 100 записей происходит перезапуск сесии редактирования.
Вот пример кода который делает запись:
{
IFeature newParcel = mFClass.CreateFeature();
newParcel.set_Value(mFClass.FindField("SHAPE"), mFeat.Shape);
newParcel.set_Value(mFClass.FindField("ID"), mFeat.get_Value(mFClassSource.FindField("ID")));
newParcel.set_Value(mFClass.FindField("KOATUU"), mFeat.get_Value(mFClassSource.FindField("KOATUU")));
newParcel.set_Value(mFClass.FindField("CAD_NUMBER"), mFeat.get_Value(mFClassSource.FindField("CAD_NUMBER")));
newParcel.set_Value(mFClass.FindField("ARHIVE_DATE"), mFeat.get_Value(mFClassSource.FindField("ARHIVE_DATE")));
if (Convert.ToString(mFeat.get_Value(mFClassSource.FindField("ARHIVE_DATE"))).Length<3)
{
CheckIntersect(newParcel, mFClass, (string)args.GetValue(6), (float)Convert.ToDouble(args.GetValue(7)));
}
newParcel.Store();
Console.Write("\r {0} Status = {1} ID = {2}", indx, mFl, mFeat.get_Value(mFID));
}
if (mLoop > 100)
{
mFWorkEditing.StopEditOperation();
mFWorkEditing.StopEditing(true);
mLoop = 0;
mFWorkEditing.StartEditing(true);
mFWorkEditing.StartEditOperation();
}
mFeat = mFCurs.NextFeature();