📄 class1.cs
字号:
IFeatureClass pFeaClass;
IDataset pDS;
IEnumNameEdit pEnumNameEdit = new NamesEnumeratorClass();
IEnumName pEnumName;
IReplicaDescription pRepDescription = new ReplicaDescriptionClass();
for (int i = 0; i < layerName.Length; i++)
{
pFeaClass = pMasterFeaWorkspace.OpenFeatureClass(layerName[i]);
pDS = pFeaClass as IDataset;
pEnumNameEdit.Add(pDS.FullName as IName);
}
pEnumName = pEnumNameEdit as IEnumName;
pRepDescription.Init(pEnumName, pCheckOutWorkspaceName, reuseSchema, dataExtractionType);
pRepDescription.ReplicaModelType = replicaModelType;//简单图层类型或与SDE数据库一样
ICheckOut pCheckOut = new CheckOutClass();
pCheckOut.CheckOutData(pRepDescription, true, checkoutName);
pCheckOutWorkspace = null;
GC.Collect();
//MessageBox.Show("签出数据成功!");
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message + "\r\n" + ex.StackTrace);
//MessageBox.Show("签出数据失败!" + "\r\n" + ex.Message);
}
}
#endregion
#endregion
#region 测试
#region 签入==测试
/// <summary>
/// 签入数据 //测试使用
/// </summary>
public void CheckIn()
{
try
{
IWorkspaceName pMasterWorkspaceName;
IWorkspaceName pCheckOutWorkspaceName;
IWorkspace pCheckOutWorkspace;
IWorkspace pMasterWorkspace;
IWorkspaceReplicas pCheckOutWorkspaceRelicas;
IReplica pCheckOutReplica;
IWorkspaceFactory pCheckOutWorkFact;
IWorkspaceFactory pMasterWorkFact;
IPropertySet pMasterPropSet;
IPropertySet pCheckOutPropSet;
IDataset pDataset;
ICheckIn pCheckIn;
pCheckOutPropSet = new PropertySetClass();
pCheckOutPropSet.SetProperty("Database", "f:\\EngineCheckOut2.mdb");
pCheckOutWorkFact = new AccessWorkspaceFactoryClass();
pCheckOutWorkspace = pCheckOutWorkFact.Open(pCheckOutPropSet, 0);
if (pCheckOutWorkspace != null)
{
pCheckOutWorkspaceName = (pCheckOutWorkspace as IDataset).FullName as IWorkspaceName;
pCheckOutWorkspaceRelicas = pCheckOutWorkspace as IWorkspaceReplicas;
pCheckOutWorkspaceRelicas.Replicas.Reset();
pCheckOutReplica = pCheckOutWorkspaceRelicas.Replicas.Next();
if (pCheckOutReplica == null)
{
MessageBox.Show("从PGDB中找不到版本信息!");
return;
}
IPropertySet pPropertySet = new PropertySetClass();
pPropertySet.SetProperty("SERVER", "192.168.16.62");
pPropertySet.SetProperty("INSTANCE", "5151");
pPropertySet.SetProperty("DATABASE", "");
pPropertySet.SetProperty("USER", "sde");
pPropertySet.SetProperty("PASSWORD", "sde");
pPropertySet.SetProperty("VERSION", "SDE.tt");
pMasterWorkFact = new SdeWorkspaceFactoryClass();
pMasterWorkspace = pMasterWorkFact.Open(pPropertySet, 0);
IDataset pMasterDataset;
//pMasterDataset = (pMasterWorkspace as IFeatureWorkspace).OpenFeatureClass("DATA.k250_index") as IDataset;
pMasterDataset = pMasterWorkspace as IDataset;
pMasterWorkspaceName = pMasterDataset.FullName as IWorkspaceName;
pCheckIn = new CheckInClass();
pCheckIn.CheckInFromGDB(pMasterWorkspaceName, pCheckOutReplica.Name, pCheckOutWorkspaceName, true, true);//pCheckOutReplica.Name
}
MessageBox.Show("签入数据成功!");
}
catch (Exception ex)
{
MessageBox.Show("签入数据失败!" + "\r\n" + ex.Message);
}
}
#endregion
#region 签出==测试
/// <summary>
/// 签出数据//测试使用
/// </summary>
public void CheckOut(IWorkspace pMasterWorkspace)
{
try
{
IPropertySet pCheckOutPropSet;
IWorkspaceFactory pCheckOutWorkFact;
IWorkspaceName pCheckOutWorkspaceName;
IName pName;
IWorkspace pCheckOutWorkspace;
pCheckOutPropSet = new PropertySetClass();
//检查PGDB path + "\\" + fileName.mdb 是否已经存在
string file = "f:\\EngineCheckOut2.mdb";
if (File.Exists(file))
{
File.Delete(file);
}
//检查版本名称为 fileName 的版本是否存在
bool hasVersion = false;
string versionName = Path.GetFileNameWithoutExtension(file);
IEnumVersionInfo pEnumVersionInfo = (pMasterWorkspace as IVersionedWorkspace).Versions;
if (pEnumVersionInfo != null)
{
pEnumVersionInfo.Reset();
IVersionInfo pVersionInfo = pEnumVersionInfo.Next();
while (pVersionInfo != null)
{
if (pVersionInfo.VersionName == "SDE." + versionName)
{
hasVersion = true;
break;
}
pVersionInfo = pEnumVersionInfo.Next();
}
}
if (hasVersion)
{
IVersion pVersion = (pMasterWorkspace as IVersionedWorkspace).FindVersion(versionName);
if (pVersion != null)
{
if (MessageBox.Show("版本 " + Path.GetFileNameWithoutExtension(file) + "已经存在!\r\n删除改版本吗?") == DialogResult.OK)
{
try
{
pVersion.Delete();
}
catch (Exception ex)
{
MessageBox.Show("删除版本时出错!\r\n" + ex.Message);
}
}
}
}
pCheckOutPropSet.SetProperty("Database", file);
pCheckOutWorkFact = new AccessWorkspaceFactoryClass();
pCheckOutWorkspaceName = pCheckOutWorkFact.Create("f:\\", "EngineCheckOut2", pCheckOutPropSet, 0);
pName = pCheckOutWorkspaceName as IName;
pCheckOutWorkspace = pName.Open() as IWorkspace;
if (pCheckOutWorkspace != null)
{
IFeatureWorkspace pMasterFeaWorkspace = pMasterWorkspace as IFeatureWorkspace;
IFeatureClass pFeaClass = pMasterFeaWorkspace.OpenFeatureClass("DATA.k250_index");
IDataset pDS = pFeaClass as IDataset;
IEnumNameEdit pEnumNameEdit = new NamesEnumeratorClass();
pEnumNameEdit.Add(pDS.FullName);
IEnumName pEnumName = pEnumNameEdit as IEnumName;
IReplicaDescription pRepDescription = new ReplicaDescriptionClass();
pRepDescription.Init(pEnumName, pCheckOutWorkspaceName, false, esriDataExtractionType.esriDataCheckOut);
pRepDescription.ReplicaModelType = esriReplicaModelType.esriModelTypeFullGeodatabase;
ICheckOut pCheckOut = new CheckOutClass();
pCheckOut.CheckOutData(pRepDescription, true, "EngineCheckOut2");
//System.Runtime.InteropServices.Marshal.ReleaseComObject(pCheckOutWorkspace);
pCheckOutWorkspace = null;
GC.Collect();
MessageBox.Show("签出数据成功!");
}
}
catch (Exception ex)
{
MessageBox.Show("签出数据失败!" + "\r\n" + ex.Message);
}
}
#endregion
#endregion
// /// <summary>
// /// 签出管理
// /// </summary>
// public void CheckOutManage()
// {
// }
//
// /// <summary>
// /// 提取数据
// /// </summary>
// public void ExtractData()
// {
// }
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -