File Geodatabase API .NET Wrapper: come determinare se la tabella / classe di caratteristiche è bloccata?


10

Ho usato il wrapper di file gdb API .NET e si è adattato perfettamente alle mie esigenze (rispetto all'utilizzo di ArcObjects). Una delle cose che devo ancora capire è se esiste un modo corretto per determinare se una tabella o una classe di caratteristiche (fc) è bloccata prima di tentare di scrivere su di essa.

Quello che sto facendo è racchiudere un aggiornamento / inserimento in un tentativo / cattura e se riesco a "non acquisire l'eccezione di blocco ...", so che l'oggetto è bloccato da qualcos'altro.

Mi sto perdendo un modo migliore per sapere se è possibile scrivere una determinata tabella o fc?


Sarei anche interessato a una risposta a questa domanda, non solo per l'API File Geodatabase, ma idealmente anche per ArcObjects.
stakx,

Dal momento che sono due API completamente diverse, suggerirei di porre una domanda separata. Non sono sicuro però che la taglia possa essere spostata.
blah238,

Sono d'accordo con @ blah238. La risposta per ArcObjects è utilizzare ISchemaLockInfo e ISchemaLock per fornire informazioni su un blocco dello schema; Penso che non ci sia risposta per l'API Filegeodatbase
Devdatta Tengshe

2
Il blocco non è esposto tramite l'API di geodatabase di file. Dovrai tentare di scrivere o ottenere il blocco di scrittura e gestire l'eccezione.
travis,

2
Hai provato Esri :: FileGDB :: Table :: IsEditable?
Kirk Kuykendall,

Risposte:


1

Non penso che ci sia un gancio nell'API di geodatabase di file per questo esplicitamente. Ma è possibile utilizzare una soluzione alternativa controllando la presenza di un file "..sr.lock" nel file system come indicato sopra.

I geodatabase di file vengono letti come cartelle sul file system e ci sarà uno di questi file per ogni macchina utente che ha una connessione attiva (o non terminata ...) al geodatabase di file (uno sulla tabella _gdb) e / o qualsiasi altra funzione classi a cui sono attualmente connessi.

È più veloce che aspettare che un errore ritorni da un errore di accesso. La risposta di MattB sopra con la dashboard di blocco è un'ottima idea per più utenti.


0

Uso ArcObjects e ho usato il metodo try / catch che hai citato.

Nel mio caso, più di un utente deve leggere e scrivere dati nella stessa classe di funzionalità in un geodatabase. Ho una "schermata di caricamento" che viene visualizzata e fa sapere all'utente che i dati sono in uso e quindi un ciclo continua a provare ogni pochi secondi in background fino a quando non è possibile creare un blocco per loro.

L'altro modo in cui ho usato i blocchi è descritto di seguito. So che il mio uso di questo metodo di guardare i file di blocco differisce da quello che vuoi fare, ma il concetto è lo stesso e potresti essere in grado di usare qualcosa di simile se devi determinare il tipo di blocco o a chi appartiene il blocco . Ecco le informazioni se sei interessato.

Dal momento che è possibile visualizzare i file di blocco specifici, a chi appartengono, che tipo di blocco sono ecc. Se si guarda all'interno del geodatabase in Esplora risorse, è necessario creare un'applicazione di "stato" autonoma che controlli i file di blocco dello specifico classe di funzionalità che usiamo tutti.

Utilizzando questo metodo sono in grado di vedere in tempo reale da una dashboard di facile lettura chi ha quella classe di funzionalità bloccata (in base al nome del computer) e che tipo di blocco hanno. Ad esempio, se vede un blocco "sr" (schema), so che hanno la classe caratteristica aggiunta al loro Sommario, un blocco "rd" significa che stanno leggendo dalla classe caratteristica, un blocco "wr" significa che stanno scrivendo dati e un blocco "ed" indicano che hanno una sessione di modifica aperta sulla classe caratteristica.

Questo è molto utile quando si esegue la manutenzione per poter guardare in basso e assicurarsi che non avrà alcun effetto negativo su nessuno. La voce "Sconosciuto" mi avvisa anche quando qualcuno di imprevisto sta usando la classe di funzionalità e posso approfondire.

Ecco una schermata della dashboard che uso. Dashboard di stato FeatureClass

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.