private void method_11() { IReplicaDescription rDDescription = new ReplicaDescriptionClass(); rDDescription.Init(this.ienumName_0, this.iworkspaceName_0, this.bool_1, esriDataExtractionType.esriDataCheckOut); rDDescription.ReplicaModelType = esriReplicaModelType.esriModelTypeFullGeodatabase; ICheckOut @out = new CheckOutClass(); ESRI.ArcGIS.GeoDatabaseDistributed.IFeatureProgress_Event event2 = @out as ESRI.ArcGIS.GeoDatabaseDistributed.IFeatureProgress_Event; base.InitEvent(event2); try { if (this.bool_2) { @out.CheckOutSchema(rDDescription, this.string_0); } else { @out.CheckOutData(rDDescription, this.bool_0, this.string_0); } } catch (Exception exception) { MessageBox.Show(exception.ToString()); } finally { base.ReleaseEvent(event2); } }
private void method_11() { try { IReplicaDescription rSDescription = new ReplicaDescriptionClass(); rSDescription.Init(this.ienumName_0, this.iworkspaceName_0, this.bool_1, esriDataExtractionType.esriDataExtraction); rSDescription.ReplicaModelType = esriReplicaModelType.esriModelTypeFullGeodatabase; IDataExtraction extraction = new DataExtractionClass(); ESRI.ArcGIS.GeoDatabaseDistributed.IFeatureProgress_Event event2 = extraction as ESRI.ArcGIS.GeoDatabaseDistributed.IFeatureProgress_Event; base.InitEvent(event2); try { if (this.bool_2) { extraction.ExtractSchema(rSDescription, null); } else { extraction.Extract(rSDescription, this.bool_0); } } catch (Exception) { } finally { base.ReleaseEvent(event2); } } catch { } }
/// <summary> /// 签出数据 /// </summary> /// <param name="pMasterWorkspace">源工作空间</param> /// <param name="featureClassName">要素类的名字</param> /// <param name="featureDatasetName">数据集的名字</param> /// <param name="checkoutName">版本名称</param> /// <param name="onlySchema">是否只签出结构</param> /// <param name="reuseSchema">是否重用已有的结构</param> /// <param name="fileName">文件名</param> /// <param name="dataExtractionType">数据提取的类型(checkout或只导出数据)</param> /// <param name="replicaModelType">简单图层或与源工作空间结构相同</param> public void CheckOut(IWorkspace pMasterWorkspace, string[] featureClassName, //要素类类的名字 string[] featureDatasetName, //数据集的名字 string checkoutName, bool onlySchema, bool reuseSchema, string fileName, esriDataExtractionType dataExtractionType, esriReplicaModelType replicaModelType) { if (File.Exists(fileName)) { File.Delete(fileName); } bool hasVersion = false; string versionName = System.IO.Path.GetFileNameWithoutExtension(fileName); IEnumVersionInfo pEnumVersionInfo = (pMasterWorkspace as IVersionedWorkspace).Versions; if (pEnumVersionInfo != null) { pEnumVersionInfo.Reset(); IVersionInfo pVersionInfo = pEnumVersionInfo.Next(); while (pVersionInfo != null) { if (pVersionInfo.VersionName == "SDE." + checkoutName) { hasVersion = true; break; } pVersionInfo = pEnumVersionInfo.Next(); } } if (hasVersion) { IVersion pVersion = (pMasterWorkspace as IVersionedWorkspace).FindVersion(versionName); if (pVersion != null) { pVersion.Delete(); } } IPropertySet pCheckOutPropSet = new PropertySetClass(); pCheckOutPropSet.SetProperty("Database", fileName); IWorkspaceFactory pCheckOutWorkFact = new AccessWorkspaceFactoryClass(); string path = System.IO.Path.GetDirectoryName(fileName); IWorkspaceName pCheckOutWorkspaceName = pCheckOutWorkFact.Create(path, checkoutName, pCheckOutPropSet, 0); IName pName = pCheckOutWorkspaceName as IName; IWorkspace pCheckOutWorkspace = pName.Open() as IWorkspace; if (pCheckOutWorkspace != null) { IFeatureWorkspace pMasterFeaWorkspace = pMasterWorkspace as IFeatureWorkspace; IFeatureClass pFeaClass; IFeatureDataset pFeatureDataset; IDataset pDS; IEnumNameEdit pEnumNameEdit = new NamesEnumeratorClass(); IEnumName pEnumName; IReplicaDescription pRepDescription = new ReplicaDescriptionClass(); for (int i = 0; i < featureClassName.Length; i++) { pFeaClass = pMasterFeaWorkspace.OpenFeatureClass(featureClassName[i]); pDS = pFeaClass as IDataset; pEnumNameEdit.Add(pDS.FullName as IName); } for (int i = 0; i < featureDatasetName.Length; i++) { pFeatureDataset = pMasterFeaWorkspace.OpenFeatureDataset(featureDatasetName[i]); pDS = pFeatureDataset as IDataset; pEnumNameEdit.Add(pDS.FullName as IName); } pEnumName = pEnumNameEdit as IEnumName; pRepDescription.Init(pEnumName, pCheckOutWorkspaceName, false, dataExtractionType); pRepDescription.ReplicaModelType = replicaModelType;//简单图层类型或与SDE数据库一样 ICheckOut pCheckOut = new CheckOutClass(); try { pCheckOut.CheckOutData(pRepDescription, true, checkoutName); } catch (Exception ex) { MessageBox.Show("可能是备份的SDE数据没有注册为版本,或者是由于该文件名上次已经作为一个版本号存在数据库中。" + ex.ToString()); } pCheckOutWorkspace = null; GC.Collect(); } }