MSSQL 데이터베이스가있는 GIS 계층이 있습니다. 레이어의 기능은 말하자면 esriFieldTypeString 유형의 필드와 esriFieldTypeBlob 유형 중 하나입니다. 문자열 필드를 잘 편집 할 수 있지만 Blob을 편집하려고하면 StopEditOperation()에서 매우 일반적인 예외가 발생합니다 (메시지 : "COM 컴포넌트로의 호출에서 HRESULT E_FAIL이 반환되었습니다.", 오류 코드 : -2147467259). 서버 로그에 관련된 내용을 찾을 수 없습니다. 아무도 무슨 일이 일어나고 있는지 알지 못해요?ArcGIS Engine에서 blob 필드를 편집하는 중 오류가 발생했습니다.
IServerContext serverContext = GetServerContext(agsConn, serviceName);
ILayer layer = GetILayer(layerName, serverContext);
IWorkspace workspace = GetIWorkspace(layer);
var feature = GetIFeature(objectId, workspace, layer);
var workspaceEdit = (IWorkspaceEdit)workspace;
workspaceEdit.StartEditing(false);
workspaceEdit.StartEditOperation();
var index = feature.Fields.FindField(featureDetailName);
IField field = feature.Fields.get_Field(index);
byte[] byteArray = {1, 2, 3};
MemoryBlobStream blob = new MemoryBlobStream();
((IMemoryBlobStreamVariant)blob).ImportFromVariant(byteArray);
if (field.CheckValue(blob))
{
feature.set_Value(index, blob);
}
feature.Store();
workspaceEdit.StopEditOperation();
workspaceEdit.StopEditing(true);
serverContext.RemoveAll();
serverContext.ReleaseContext();
: 객체를 행하기위한 참조가 편집 작업을 통해 유지됩니다 경우 또한
이의 말에 제안을하려고 .. 모든 참조하고 다시 반입 객체를 폐기 지금까지 행운. –