PROBLEM

Unable to perform queryFilter tasks with GlobalID

Last Published: April 25, 2020

Description

Performing a queryFilter task with GlobalID in ArcGIS Runtime SDK for .NET fails, and any linkage between features is not established. The following is an example of a failed queryFilter task:

...
qF.WhereClause = "GlobalID='{DCD212BC-9D7C-48B5-97FD-BBA9454BFBFA}'"
...

Cause

The problem lies in the correlation of the GlobalID and Globally Unique Identifier (GUID). GlobalID values are automatically generated when records are added to the table. These values are stored using an uppercase string representation. However, when runtime content is published, the returned GlobalID is in the System.GUID format, and the Guid.ToString method stores the values in lowercase by default. This is a Microsoft MSDN design wherein the value of the GUID is represented as a series of lowercase hexadecimal digits.

This behavior leads to conflicts in ArcMap when relating the GlobalID and GUID columns, as both values are compared in string format, which is case sensitive (for example, in ArcMap, the GUID value {EF2E0C18-638C-4C6D-AFA7-4D23581CCAA5} is not the same as {ef2e0c18-638c-4c6d-afa7-4d23581ccaa5}).

Solution or Workaround

Use one of the following suggested solutions to complete the queryFilter task:

Article ID:000015294

Software:
  • ArcGIS Runtime SDK for NET 100 x
  • ArcMap
  • ArcGIS Runtime SDK for NET 10 2 6
  • ArcGIS Runtime SDK for NET 10 2 7

Get help from ArcGIS experts

Contact technical support

Download the Esri Support App

Go to download options

Related Information

Discover more on this topic