[Arcengine] 关于 ITable.DeleteSearchedRows 报错的问题
实际项目中需要删除 SDE 库指定属性表的指定行,想到以前用过ITable.DeleteSearchedRows 完成删除本地数据的操作,便搬来照用。然而报错,具体提示是“这个集合中找不到此项目”。查了 esri 的开发文档,并没有详细说明。
出错的代码如下,此处略过获取工作空间的代码。
ITable ptable=workspace.OpenTable(name);
ptable.DeleteSearchedRows(new QueryFilterClass(){WhereClause="bsm = 1"});
拿queryfilter的条件到库里面去执行删除操作没有报错。
本项目登录获得的工作空间是 A 用户的,而要删除的数据是 B 用户的。第一反应是 A 用户权限不够高,无法对 B 用户的表进行删除操作,通过赋予A用户管理员权限后依旧报此错误,排除这一可能。
考虑的第二个可能性是没开启事务,然而把事务开了以后报同样的错误。
最后试着用本方法删除 A 用户下属性表/空间表的某行 ,成功执行;再试着用 A 用户删除 B 用户下空间表的某行,成功执行。
所以最后的结论就是 A 用户无法跨用户删除 B 用户下的属性表,原因未知,望指教。
最后使用的替代方法是workspace.ExecuteSQL("");