日本語

問題: GlobalID を使用して queryFilter タスクを実行できない

説明

ArcGIS Runtime SDK for .NET で GlobalID を使用して queryFilter タスクを実行すると失敗し、フィーチャ間のリンクを確立できません。 次に、失敗した queryFilter タスクの例を示します。

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

原因

この問題の原因は、GlobalID と Globally Unique Identifier (GUID) との相関にあります。 GlobalID 値はレコードがテーブルに追加されると自動的に生成されます。 これらの値は、大文字の文字列表現を使用して格納されます。 しかし、Runtime コンテンツの公開時に返される GlobalID は System.GUID 形式であり、Guid.ToString メソッドではデフォルトで値が小文字で格納されます。 GUID の値が小文字の 16 進数字で表されるというのは、Microsoft MSDN の設計です。

この挙動により、ArcMap で GlobalID 列と GUID 列の関連付けを行うときに競合が発生します。どちらの値も大文字と小文字が区別される文字列形式で比較されるからです (たとえば、ArcMap の GUID 値は {EF2E0C18-638C-4C6D-AFA7-4D23581CCAA5} で、これは {ef2e0c18-638c-4c6d-afa7-4d23581ccaa5} と同じではありません)。

解決策または対処法

queryFilter タスクを実行するには、次のいずれかの解決策を使用することをお勧めします。

関連情報