问题:我无法确定用于将 WPF 桌面应用程序连接到 Azure 文件存储上的 SQLite 数据库的连接字符串。感谢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 文件存储将是可行的方法。