背景:  

  最近在开发一个管道数据维护系统的新增模块,牵涉到将这个模块的数据编辑统一到整个系统的编辑处理框架内的问题:即这个系统的所有对数据产生的编辑都需要处在整个系统唯一的开始、保存、回滚编辑的入口内。通俗点说,就是只有当整个系统开始编辑之后才能激发我自己新增的这个模块,然后在这个模块儿内开始对数据进行编辑操作。在这个过程中碰到了这两个概念的使用问题,经过查找定义与实际测试,将二者区别总结如下:

结论:

  • 这两方法都是属于IWorkspaceEdit接口下的方法
  • StartEditing(bool UndoRedo)
    • 开始编辑,bool型的参数表示这个编辑框架内的操作是否可以进行Undo和Redo;
    • 这个操作是针对一个IWorkspace的,即使一个工作空间开始编辑,可以进行各种数据的增、删、改操作;
    • 停止编辑工作空间对应于StopEditing(bool saveEdits),即将所做的编辑最终保存到数据库中;bool型参数表示是否保存所做的编辑到数据库
  • StartEditOperation
    • 开启一个编辑会话,意思是开始一个局部的编辑操作;
    • 比如我打开了整个编辑空间之后,可能需要增加2条数据,那么此时需要进行一次StartEditOperation/StopEditOperation操作,完成增加2条数据;然后我还需要删除3条数据,接着再次进行一次StartEditOperation/StopEditOperation操作,完成我删除数据的目的;
    • 你可以在一次StartEditing/StopEditing的范围内,多次进行StartEditOperation/StopEditOperation操作,即在一次编辑内进行多个局部具体的数据编辑操作;
    • 注意:这里的StopEditOperation操作,只是将数据保存到工作空间内,还并没有把数据真正保存到数据库内。
  • AbortEditOperation
    • 回滚操作,将所做的编辑撤销
    • 通过方法名比较可以看出,这里的回滚只能针对某一个具体的编辑范围内的操作,即出于一个StartEditOperation/StopEditOperation内的操作;
    • 如果你在一次工作空间的开始编辑下进行了多个编辑会话,那么此时你想全部回滚的话,只能是在最后进行StopEditing时将参数设置为false来达到目的

后记:

  在一个比较大的系统中进行ArcEngine的编辑时,要注意理解二者之间的关系,更好的将多个模块的数据编辑统一起来。以上理解,如果有补充欢迎指正。

ArcEngine开发中StartEditing和StartEditOperation的区别的更多相关文章

  1. ***php进行支付宝开发中return_url和notify_url的区别分析

    本文实例分析了php进行支付宝开发中return_url和notify_url的区别.分享给大家供大家参考.具体分析如下: 在支付宝处理业务中return_url,notify_url是返回些什么状态 ...

  2. android开发中的 Activity 与 Context 区别与联系

    Context 是 Application /Activity /Service的基类 Intent(Context , Class); Activity中的上下文Context是随着活动的产生而产生 ...

  3. ArcEngine开发中“错误类型"****"未定义构造函数”

    from:http://blog.csdn.net/mengdong_zy/article/details/8990593 问题 在ArcEngine开发的时候,在编译时,发现出现这样的错误,出错的地 ...

  4. mvc开发中DTO,DO,FROM的区别

    DO:数据库实体类映射到model里的实体类,每个字段都和数据库相对应,一般来说开发的时候不要去添加或者修改里面的实体 DTO:与前台交互的时候(一般来说是查询操作)有一些数据字段是那一张表里面没有囊 ...

  5. 支付宝开发中return_url和notify_url的区别分析

    在处理支付宝业务中出现过这样的问题,付费完成后,在支付宝跳转到商家指定页面时,订单状态已经更新,通过调试发现是支付宝先通知notify_url,完成了订单状态. 支付宝return_url和notif ...

  6. 开发中mysql和oracle的区别

    首先就不描述mysql与oracle在整个数据库系统上的区别了,仅从程序员开发的角度来说: 1.主键: mysql一般会用到一个自增的属性,例如设置一个id字段,类型设置为auto increment ...

  7. PHP 进行支付宝开发中return_url和notify_url的区别分析

    在支付宝处理业务中return_url,notify_url是返回些什么状态呢,我们要根据它来做一些处理就必须了解return_url,notify_url的区别,下面我就来给大家介绍; 一.问题描述 ...

  8. iOS开发中frame与bounds的区别

    闲话不多说,先上两张图,大伙们就已经明白了: 显示出来的效果是这样子滴:  总结: 要理清这两者的区别,最主要的要理解一下几个概念:frame可以理解为可视的范围,而bounds可以理解为可视范围内的 ...

  9. ios 开发中 动态库 与静态库的区别

    使用静态库的好处 1,模块化,分工合作 2,避免少量改动经常导致大量的重复编译连接 3,也可以重用,注意不是共享使用 动态库使用有如下好处: 1使用动态库,可以将最终可执行文件体积缩小 2使用动态库, ...

随机推荐

  1. Windows Server 服务器安全配置

    Windows Server 服务器安全配置 好吧,我标题党了.我只了解一些基本的安全配置.如果你是大湿,请绕道或者给予我严厉的批评让我进步谢谢. 编辑这篇文章用的编辑器编辑的,当我单击查看的时候发现 ...

  2. redis 中文存储乱码问题

    在redis 中存储中文,读取会出现乱码(其实不是乱码,只是不是我们存的中文显示) redis> set test "我们" OK redis> get test &q ...

  3. SQLite数据库操作 (原始操作)

    android提供了一个名为SQLiteDatabase的类,该类封装了一些操作数据库的API, 使用该类可以完成对数据进行添加(Create).查询(Retrieve).更新(Update)和删除( ...

  4. 将JDBC ResultSet结果集转成List

    private List<Map<String, Object>> list = new ArrayList<Map<String,Object>>() ...

  5. MVC+Front Controller

    MVC+Front Controller 在我前面一篇博文<逃脱Asp.Net MVC框架的枷锁,使用Razor视图引擎>发表之后,很多人关心,脱离了之后怎么办?那么这可以说是它的续篇了. ...

  6. 代码契约CodeContract(八)

    代码契约(Code Contract):它并不是语言本身的新功能,而是一些额外的工具,帮助人们控制代码边界. 代码契约之于C#,就相当于诗词歌赋之于语言. --- C# in Depth 一,概述 1 ...

  7. Arduino live weather broadcasting 实时天气站

    Live broadcasting with arduino get a pc , make it run linux. make arduino catch the weather sensor a ...

  8. 使用 javascript 来实现 观察者模式

    以[猫叫.老鼠跑.主人醒]为例子,使用 javascript 来实现 观察者模式 (有在线演示) 2013-06-24 08:35 by 金色海洋(jyk)阳光男孩, 572 阅读, 4 评论, 收藏 ...

  9. hdu2534-Score

    http://acm.hdu.edu.cn/showproblem.php?pid=2534 由题知, 每一个数据都可以由ax +by组成: ax1 + by1 - c x2 a - d y2 == ...

  10. php memcached缓存集群

    一.需求描述 一linode xen vps 1G RAM,40+sites,IO频繁,openfiles ulimit已65535 US时间访问量大增,nginx不定时502 二.解决办法 page ...