嗯,我无法找到的文档,我无法找到帮助,所以我鹅卵石了一起:
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)也是必须的 –