Подключение к базе данных SQLite в хранилище файлов Azure - PullRequest
0 голосов
/ 05 июня 2018

Проблема: я не могу понять, какую строку подключения использовать для подключения настольного приложения WPF к базе данных SQLite в хранилище файлов Azure.Благодаря Документации MSDN я могу получить доступ к CloudFile из приложения (поэтому у меня есть доступ к URI), но когда я передаю URI в строку соединения, чтобы создать соединение, а затем пытаюсь открытьПри подключении я получаю сообщение об ошибке, что мой URI недействителен.Соединение работает нормально, когда я пытаюсь подключиться к базе данных SQLite на моем жестком диске.Нужно ли передавать ключ или что-то в строку подключения SQLite для подключения к базе данных в хранилище файлов Azure?Это вообще возможно?

    /// <summary>
    ///  Add all online (Azure file storage) data sources
    /// </summary>
    private void FindOnlineDataSources()
    {
        var accountName = "myAccountName";
        var keyValue = "myKeyValue";
        var useHttps = true;
        var exportSecrets = true;

        var storageCredentials = new StorageCredentials(accountName, keyValue);
        var storageAccount = new CloudStorageAccount(storageCredentials, useHttps);
        var connString = storageAccount.ToString(exportSecrets);

        // Create a CloudFileClient object for credentialed access to Azure Files.
        CloudFileClient fileClient = storageAccount.CreateCloudFileClient();

        // Get a reference to the file share we created previously.
        CloudFileShare share = fileClient.GetShareReference("myShare");

        // Ensure that the share exists.
        if (share.Exists())
        {
            // Get a reference to the root directory for the share.
            CloudFileDirectory rootDir = share.GetRootDirectoryReference();

            // Get a reference to the directory we created previously.
            CloudFileDirectory sampleDir = rootDir.GetDirectoryReference("myDirectory");

            // Ensure that the directory exists.
            if (sampleDir.Exists())
            {
                // Get a reference to the file we created previously.
                var fileList = sampleDir.ListFilesAndDirectories();
                foreach (var fileTemp in fileList)
                {
                    if (fileTemp is CloudFile && TestConnection(SQLiteOnlineConnectionBuilder(fileTemp.StorageUri.PrimaryUri.AbsoluteUri)))
                    {
                        // Store reference to data source
                    }
                }
            }
        }
    }

    /// <summary>
    ///  Test data source connection to determine if it is accessible
    /// </summary>
    private bool TestConnection(DbConnection connection)
    {
        bool retval = false;
        try
        {
            connection.Open();
            connection.Close();
            retval = true;
        }
        catch { }

        return retval;
    }

    /// <summary>
    ///  Create SQLite connection from URI string
    /// </summary>
    private DbConnection SQLiteOnlineConnectionBuilder(string uri)
    {
        return new SQLiteConnection
        {
            ConnectionString = new SQLiteConnectionStringBuilder
            {
                Uri = uri,
                ForeignKeys = true,
                BinaryGUID = false,

            }.ConnectionString
        };
    }

Справочная информация: я создаю настольное приложение для использования в своей компании.Данные для приложения хранятся в базе данных SQLite.У нас будет только 5 пользователей, которые будут одновременно получать доступ к данным, поэтому я решил, что нет необходимости пытаться настроить полноценный сервер - SQLite кажется отличным вариантом.

Однако я пытаюсь поместить базу данных SQLite в нашу учетную запись хранилища файлов Azure, чтобы несколько пользователей могли получить к ней доступ через настольное приложение, где бы у них не был доступ в Интернет.У нас нет центральной сети компании, поэтому я решил, что хранилище файлов Azure поможет.

...