当一个要素类参与了一个拓扑(或Geometry Network)之后,对该要素类执行创建要素、修改要素图形或属性时,可能会出现这个异常:"Objects in this class cannot be updated outside an edit session"
'pFeatureLayer:参与拓扑的要素类的图层
'pGeo:为新建要素关联的图形
'StartEditOperation
Try
Dim pFeat As IFeature = pFeatureLayer.FeatureClass.CreateFeature ——此句引发异常
pFeat.Shape = pGeo
pFeat.Store()
'StopEditOperation()
Catch ex As Exception
'AbortEditOperation()
End Try
'pGeo:为新建要素关联的图形
'StartEditOperation
Try
Dim pFeat As IFeature = pFeatureLayer.FeatureClass.CreateFeature ——此句引发异常
pFeat.Shape = pGeo
pFeat.Store()
'StopEditOperation()
Catch ex As Exception
'AbortEditOperation()
End Try
原因
这是由于
ArcEngine应用程序中使用的License权限不足引起的。在ArcEngine
应用程序里面通过ArcSDE进行编辑需要License"ArcGIS Engine Enterprise
Geodatabase",或ArcEditor或ArcInfo。
解决办法
在ArcEngine应用程序的LicenseInitializer.InitializeApplication中,为程序增加Geodatabase的编辑权限。
Public Function InitializeApplication() As Boolean
'……
licenseStatus = CheckOutLicenses(esriLicenseProductCode.esriLicenseProductCodeEngineGeoDB)
licenseStatus = CheckOutLicenses(esriLicenseProductCode.esriLicenseProductCodeEngine)
'……
End Function