I was wondering if there was a way to associate/persist some data about an SDE featureclass when viewing via ArcCatalog.

I know you can have metadata - but I don't want to use that, and I'm pretty sure that won't work for what I'm planning. I want to have a form that will show when you right click the layer, then you can fill in some details in a form and send that info to a nominated user via email or dump out to a text file.

So there is an issue of persistance here - I want users from various parts of the organisation to be able to view the extra info about the layer - so there must be something that SDE does to store info about a layer somewhere in the SDE tables.

If anyone can give some pointers/interfaces etc that would be great.

  • What sort of "info" are you looking to get from SDE? May 17, 2011 at 15:29
  • Well, I can auto pop a list of field names, - the user can then check a check box next to them and write some comments about them, and the "receiver" would then interpret this and maybe publish this layer in a certain way in a web IMS application. To be honest it's not a problem getting info from a layer in SDE, it's just persisting user comments etc against a layer for others to pick up and use.
    – Vidar
    May 17, 2011 at 15:38
  • At the moment I'm reading up about Plug in data sources and seeing if theres anything that may be useful there.
    – Vidar
    May 17, 2011 at 16:23
  • When you say "right click the layer" do you really mean an ILayer? If so, have you considered using ILayerExtensions? May 17, 2011 at 16:29
  • Yes Kirk, I think I remember using them for storing data in via IPropertySet in an mxd - and that seemed to work - I never thought this could work in SDE too.
    – Vidar
    May 17, 2011 at 17:04

2 Answers 2


If you want to persist some data in a geodatabase, the customization to leverage are workspace extensions.

You would typically create a tool in ArcCatalog to register the workspace extension with the specific geodatabase and create special tables in that geodatabase that store your custom data. You can specify that your extension owns and manages these tables so that they are not normally visible within the workspace (by implementing DataDictionaryTableNames and PrivateTableNames.

Then, tools that need to work on this stored data communicate with the workspace extension to retrieve it or modify.

By implementing IWorkspaceEvents you can, say, delete some of your relevant persistent information when a dataset (e.g. feature class, table) gets deleted.

Note that there are two types of workspace extension registration, the overview document (first link of this post) provides good discussion of their advantages/disadvantages.

Might be too heavyweight in your scenario, though, but it is the recommended approach to these kind of tasks. Of course you can bypass the whole extension business and just store your data in a special table, which your custom tools will work with.

  • Does a workspace extension affect other users that don't have their ArcCatalog registered with a particular extension? I don't want to mess up the whole SDE repository for everyone else.
    – Vidar
    May 17, 2011 at 19:17
  • That depends on how they are registered. Check the "Geodatabase registration vs. component category registration" section of help.arcgis.com/en/sdk/10.0/arcobjects_net/conceptualhelp/…
    – Petr Krebs
    May 17, 2011 at 20:25

From your comments, sounds like you could store these custom comments/metadata/info in XML out on the filesystem and then you don't have to worry about persisting them. Would that work? Easy enough reading/writing XML in .NET with LINQ.

  • Sounds feasible - but I was hoping for a neater solution that the SDE architecture could support.
    – Vidar
    May 17, 2011 at 16:21

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.