我可以通过MVC应用程序中的FileStore实例连接到RavenDBServer,前提是初始化了FS,因此(例如)我用DataDirectory集创建了一个RavenDBServer:
要清楚:--这是作为一个嵌入式实例运行的。
var config = new RavenConfiguration
{
DataDirectory = "~\\App_Data\\Database",
DatabaseName = "test"
};
var server = new RavenDbServer(config);
server.UseEmbeddedHttpServer = true;然后转到Raven UI,添加一个名为test-fs的FS,在初始化代码中添加以下内容:
server.FilesStore.DefaultFileSystem = "test-fs";
server.FilesStore.Initialize();然后当我打电话:
server.FileStore.OpenAsyncSession("test-fs");我们都很好。
理想情况下,我不想继续这样做,因为这很麻烦,而且涉及到更改代码。所以。我把这个放进去:
server.FilesStore.AsyncFilesCommands.Admin.CreateOrUpdateFileSystemAsync(new FileSystemDocument(), "test-fs");但这不会在FileSystems文件夹中创建App_Data文件夹,任何对OpenAsyncSession的尝试都会导致错误,说明无法打开test-fs。
如何在初始化时创建FS?我是在MVC (5.2)应用程序中这样做的。
发布于 2015-01-05 10:24:22
在线程邮件列表中看到这个RavenDB。
你可以这样做:
var store = new EmbeddableDocumentStore {
RunInMemory = true,
EnlistInDistributedTransactions = false
};
store.Initialize();
RavenServer = store;
var createFs = Task.Run(async () => {
await store.FilesStore.AsyncFilesCommands.Admin.CreateOrUpdateFileSystemAsync(
new FileSystemDocument {
Settings = {
{ "Raven/FileSystem/DataDir", "~/App_Data/FileSystem/default" }
}
},
"default"
).ConfigureAwait(false);
});
createFs.Wait();下一个版本应该支持内存中的文件存储。
发布于 2014-12-07 21:25:52
我使用静态FileStoreHolder来提供FilesStore。作为DocumentStore的推荐。
internal class FilesStoreHolder
{
private static readonly Lazy<IFilesStore> Store = new Lazy<IFilesStore>(CreateStore);
public static IFilesStore FilesStore
{
get { return Store.Value; }
}
private static IFilesStore CreateStore()
{
var store = new FilesStore
{
ConnectionStringName = "ConnStr",
DefaultFileSystem = "MyFS"
}.Initialize();
return store;
}
}然后,当我需要FS会话时,我就这样得到了它:
using (var fsSession = FilesStoreHolder.FilesStore.OpenAsyncSession())
{
return await fsSession.DownloadAsync(Folder + name);
}https://stackoverflow.com/questions/26427765
复制相似问题