Файл API Geodatabase .NET Wrapper: Як визначити, чи заблоковано таблицю / клас функцій?


10

Я використовую обгортку файлу gdb API .NET, і він досить добре відповідає моїм потребам (порівняно з використанням ArcObjects). Однією з речей, яку я ще повинен з’ясувати, є наявність правильного способу визначення того, чи заблокована таблиця або клас функцій (fc) перед спробою запису до неї.

Те, що я робив, - це перетворення оновлення / вставки в спробу / лову, і якщо я дістався до "не можу придбати виняток із блокування ...", я знаю, що об'єкт заблокований чимось іншим.

Чи пропускаю я кращий спосіб сказати, чи можна записати задану таблицю чи fc?


Я також був би зацікавлений у відповіді на це питання не лише для API файлу Geodatabase API, але в ідеалі також і для ArcObjects.
stakx

Оскільки це два абсолютно різних API, я б запропонував задати окреме запитання. Я не впевнений, чи можна було би перенести щедроту.
blah238

Я згоден з @ blah238. Відповідь для ArcObjects - використовувати ISchemaLockInfo & ISchemaLock для надання інформації про блокування схеми; Я думаю, що для API
Filegeodatbase

2
Блокування не виявляється через API файлу geodatabase. Вам доведеться спробувати або записати, або отримати блокування запису, і вирішити виняток.
travis

2
Ви пробували Esri :: FileGDB :: Таблиця :: IsEditable?
Кірк Куйкендалл

Відповіді:


1

Я не думаю, що в API файлу geodatabase для цього явно є гак. Але ви можете використовувати вирішення, перевіривши файлову систему на наявність файлу "..sr.lock", як зазначено вище.

Бази геоданих файлів читаються як папки у файловій системі, і буде кожен із цих файлів для кожної машини користувача, яка має активне (або невстановлене ...) підключення до бази даних геоданих (одна у таблиці _gdb) та / або будь-яку функцію класи, до яких вони зараз підключені.

Це швидше, ніж чекати, коли помилка повернеться із пошкодження доступу. Відповідь MattB вище на панелі приладів блокування - це чудова ідея для багатьох користувачів.


0

Я використовую ArcObjects і застосував згаданий вами метод спробувати.

У моєму випадку більш ніж одному користувачеві потрібно читати і записувати дані в одному класі функцій в базі даних геоданих. У мене з'являється "екран завантаження", який дає змогу користувачеві знати, що дані використовуються, і тоді цикл намагається кожні кілька секунд намагатися творити, поки блокування не зможе створити для них.

Інший спосіб, яким я користувався блокування, описаний нижче. Я знаю, що моє використання цього методу перегляду файлів блокування відрізняється від того, що ви хочете зробити, але концепція однакова, і ви можете використовувати щось подібне, якщо вам потрібно визначити тип блокування або кому належить замок . Ось інформація, якщо вас цікавить.

Оскільки ви можете бачити конкретні файли блокування, до кого вони належать, до якого типу блокування вони є і т. Д., Якщо ви заглянете всередину бази даних геоданих у Провіднику Windows, це створити окрему програму "статус", яка контролює файли блокування конкретних особливий клас, який ми всі використовуємо.

Використовуючи цей метод, я в режимі реального часу можу побачити на легкості для читання інформаційну панель, у кого заблокований клас функцій (заснований на імені комп'ютера) та тип блокування у них. Наприклад, якщо він бачить замок "sr" (схеми), я знаю, що до їх змісту доданий клас функції, "замок" rd означає, що вони читають з класу функцій, "wr" блокування означає, що вони пишуть Дані та блокування "ed" означають, що в класі функцій відкрито сеанс редагування.

Це дуже корисно при технічному обслуговуванні, щоб мати можливість поглянути вниз і переконатися, що це не матиме негативного впливу на когось. Запис "Невідомий" також попереджає мене про те, коли хтось несподівано використовує клас функцій, і я можу дослідити далі.

Ось знімок екрана панелі приладів, яку я використовую. Інформаційна панель FeatureClass Status

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.