Estoy intentando añadir un campo GUID mediante programación a una FeatureClass existente utilizando ArcObjects.
Aquí está mi código:
ISchemaLock schemaLock = (ISchemaLock)ipFC;
try
{
// A try block is necessary, as an exclusive lock may not be available.
schemaLock.ChangeSchemaLock(esriSchemaLock.esriExclusiveSchemaLock);
//Ajout d'un champ GUID
IFieldsEdit pNewFieldsEdit = (IFieldsEdit)ipFC.Fields;
IField guidField = new FieldClass();
IFieldEdit guidFieldEdit = (IFieldEdit)guidField;
guidFieldEdit.Name_2 = "OldGlobalID";
guidFieldEdit.Type_2 = esriFieldType.esriFieldTypeGUID;
guidFieldEdit.DefaultValue_2 = null;
guidFieldEdit.IsNullable_2 = true;
pNewFieldsEdit.AddField(guidField);
}
catch (Exception exc)
{
// Handle this in a way appropriate to your application.
Console.WriteLine(exc.Message);
}
finally
{
// Set the lock to shared, whether or not an error occurred.
schemaLock.ChangeSchemaLock(esriSchemaLock.esriSharedSchemaLock);
}
Todo parece funcionar (no hay error) y se basa en un ejemplo de documentación . Por desgracia, cuando hago clic en la clase de característica en ArcCatalog y abrir la vista previa de la tabla, tengo este mensaje que muestra:
Además, la tabla se abre en la vista previa, pero está toda vacía (cabecera y fila) con 308 registros (el número correcto de filas en la clase de características). ¿Qué estoy haciendo mal?
EDITAR
Si compruebo las propiedades de mi feature class, el nuevo campo parece estar ahí:
Pero la vista previa se ve así justo después del mensaje de error..:
¿Alguna idea?
EDITAR 2
He descubierto que cuando reinicio ArcCatalog y vuelvo a entrar en las propiedades, el nuevo campo ha desaparecido y no hay problema para abrir la vista previa de la tabla, pero el nuevo campo no aparece por ningún lado. ¿Tal vez hay una función para "Guardar" todo después de que el campo se ha añadido?