MSSQL データベースに支えられた GIS レイヤーがあります。レイヤー上のフィーチャには、たとえば、タイプ esriFieldTypeString の 1 つのフィールドとタイプ esriFieldTypeBlob の 1 つがあります。文字列フィールドは問題なく編集できますが、BLOB を編集しようとすると、StopEditOperation() が非常に一般的な例外をスローします (メッセージ:「COM コンポーネントへの呼び出しからエラー HRESULT E_FAIL が返されました。」、エラー コード: -2147467259)。サーバーログに関連するものは見つかりませんでした。何が起こっているのか誰にも分かりませんか?
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();