嗯,我無法找到的文檔,我無法找到幫助,所以我鵝卵石了一起:
static class RavenDbExtensions
{
/// <summary>
/// Ensure a bundle is activated
/// </summary>
/// <param name="documentStore"></param>
/// <param name="bundleName"></param>
/// <param name="databaseName"></param>
public static void ActivateBundle(this IDocumentStore documentStore, string bundleName, string databaseName)
{
using (var session = documentStore.OpenSession())
{
var databaseDocument = session.Load<DatabaseDocument>("Raven/Databases/" + databaseName);
var settings = databaseDocument.Settings;
var activeBundles = settings.ContainsKey(Constants.ActiveBundles) ? settings[Constants.ActiveBundles] : null;
if (string.IsNullOrEmpty(activeBundles))
settings[Constants.ActiveBundles] = bundleName;
else if (!activeBundles.Split(new char[]{';'}).Contains(bundleName, StringComparer.OrdinalIgnoreCase))
settings[Constants.ActiveBundles] = activeBundles + ";" + bundleName;
session.SaveChanges();
}
}
}
然後我初始化文件存儲時做到這一點小舞。它似乎運作良好。目前尚不清楚這個軟件包是否被命名爲Expiration或DocumentExpiration,所以我嘗試它不會崩潰,它似乎摺疊在我需要的過期功能中。
_documentStore = new DocumentStore()
{
Url = SettingsManager.RavenDbUrl
};
_documentStore.Initialize();
_documentStore.ActivateBundle("Expiration", Assembly.GetExecutingAssembly().GetName().Name);
_documentStore.ActivateBundle("DocumentExpiration", Assembly.GetExecutingAssembly().GetName().Name);
_documentStore.DefaultDatabase = Assembly.GetExecutingAssembly().GetName().Name;
我 使用使用(VAR會話= documentStore.OpenSession( 「」)) 但它的作品!謝謝 –
ms007
此答案發生了一些事情。因爲它不再有效。我通過添加session.Advanced.GetMetadataFor(databaseDocument)[Constants.AllowBundlesChange] = true;當然,@St007提到的documentStore.OpenSession(Constants.SystemDatabase)也是必須的 –