Поддерживает ли LiteDB длинные имена файлов (> = 260 символов) в строке подключения - PullRequest
0 голосов
/ 28 августа 2018

Я использую litedb в качестве индекса файла, в результате чего я воссоздаю структуру каталогов общей папки и помещаю файл litedb.db в каждый каталог в моей иерархии. Кажется, проблема, с которой я сталкиваюсь, состоит в том, что структура каталогов имеет длину более 260 символов (см. Сообщение об ошибке ниже). Есть ли способ включить поддержку длинных имен файлов в строке соединений при подключении к litedb? В качестве альтернативы есть способ создания моего экземпляра litedb с использованием другого подхода (например, file.open AlphaFS).

System.IO.DirectoryNotFoundException: Could not find a part of the path 'C:\Users\......\Some deep directory which is 260+ characters long\index.db'.
  at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
  at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
  at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options)
  at LiteDB.FileDiskService.Initialize(Logger log, String password)
  at LiteDB.LiteEngine..ctor(IDiskService disk, String password, Nullable`1 timeout, Int32 cacheSize, Logger log, Boolean utcDate)
  at LiteDB.LiteDatabase.<>c__DisplayClass11_0.<.ctor>b__0()
  at LiteDB.LazyLoad`1.get_Value()
  at LiteDB.LiteCollection`1.EnsureIndex(String field, String expression, Boolean unique)
  at LiteDB.LiteCollection`1.EnsureIndex[K](Expression`1 property, Boolean unique)

1 Ответ

0 голосов
/ 29 августа 2018

LiteDB использует FileStream ctor для открытия файла данных, поэтому это может быть проблемой с длинными путями. Но вы можете использовать Stream в качестве инициализатора для вашей базы данных, чтобы вы могли открыть его на любой платформе.

...