Tag: ravendb

RavenDB:如何将session.Query转换为session.Advanced.DocumentQuery?

我将以下类的对象存储在ravendb数据库中: public class Continent { public string Name { get; set; } public List Countries{ get; set; } } public class Countries { public string Name { get; set; } public List Provinces{ get; set; } } public class Province { public string Name { get; set; } public List Cities { get; set; } […]

嵌入式RavenDB“无法找到事务存储类型”错误

我能够根据以下代码成功运行RavenDB的简单测试: http ://ravendb.net/tutorials/hello-world 接下来我尝试以嵌入式方式运行它,但我继续收到以下错误: Message: Could not find transactional storage type: Raven.Storage.Esent.TransactionalStorage, Raven.Storage.Esent StackTrace: at Raven.Database.Config.InMemoryRavenConfiguration.CreateTransactionalStorage(Action notifyAboutWork) in c:\Builds\raven\Raven.Database\Config\InMemoryRavenConfiguration.cs:line 272 at Raven.Database.DocumentDatabase..ctor(InMemoryRavenConfiguration configuration) in c:\Builds\raven\Raven.Database\DocumentDatabase.cs:line 109 at Raven.Client.Client.EmbeddableDocumentStore.InitializeInternal() in c:\Builds\raven\Raven.Client.Embedded\EmbeddableDocumentStore.cs:line 130 at Raven.Client.Document.DocumentStore.Initialize() in c:\Builds\raven\Raven.Client.Lightweight\Document\DocumentStore.cs:line 388 at Tests.RavenEmbedded.RavenDB..ctor() in C:\Users\Pranav\Documents\Projects\Repositories-Clone\Common-clone\Tests\RavenDB.cs:line 114 at Tests.TestRavenDB.Basics() in C:\Users\Pranav\Documents\Projects\Repositories-Clone\Common-clone\Tests\RavenDB.cs:line 170 建立: 目标框架是.NET Framework 4 我在项目中添加了以下引用: \ RavenDB – 建造 […]

如何禁用RavenDB复制

如何禁用RavenDB复制? 原因是我在一台服务器上有一个简单的数据库,此时我不需要任何复制。 IDocumentStore tmpStore = new DocumentStore { Url = url }; tmpStore.Initialize(); tmpStore.DatabaseCommands.EnsureDatabaseExists(dbName); // WebException 如果我尝试确保创建了数据库,则会收到HTTP状态为404的WebException。当RavenDB向/ docs / Raven / Replication / Destinations发出请求时,会发生此错误。 或者我只是忽略这个例外?

RavenDB如何刷新?

我正在使用RavenDb嵌入式。 作为我整合测试的一部分,我想检查对象是否持久化。 当我在一个对象上SaveChanges然后检索它时,除非我处理我的连接,否则找不到它。 这对我不起作用,因为没有返回任何文件 using (var session = _dataDocumentStore.Instance.OpenSession()) { session.Store(file); session.SaveChanges(); } …. using (var session = _dataDocumentStore.Instance.OpenSession() ) { return session.Query().ToList(); } 我创建了一个Flush方法来处理和重新创建一个可以工作的EmbeddableDocumentStore,但是因为这是感觉基本的东西我可能会以错误的方式处理事情: public static IDocumentStore Initialize() { instance = new EmbeddableDocumentStore { DataDirectory = “App_Data/Database”, UseEmbeddedHttpServer = true, }; instance.Initialize(); return instance; } public void Flush() { instance.Dispose(); Initialize(); } 你如何坚持RavenDB,然后检查它一直存在? 对此的任何建议都会很棒

如何在测试期间处理陈旧的索引?

我在内存模式下使用RavenDB进行unit testing。 我的查询由静态索引支持。 我没有使用WaitForNonStaleResults() API(我也不想)。 测试的典型工作流程是: 在In-Memory模式下初始化RavenDB 使用IndexCreation.CreateIndexes(Assembly, IDocumentStore)集成索引 插入测试数据(用于validation查询行为) 运行查询 validation查询输出 我注意到步骤1-3发生得如此之快,静态索引没有时间在步骤4之前得到更新 – 因此索引是陈旧的。 我为此创建了一个快速的解决方案。 在第3步之后,我执行: while (documentStore.DocumentDatabase.Statistics.StaleIndexes.Length != 0) Thread.Sleep(10); 这感觉很麻烦。 我想知道的是: 在In-Memory模式下运行RavenDB时,索引是否过时是正常的? 在测试期间是否有更好的方法来避免过时的索引?

用于RavenDB的多个Contains / Any的Linq查询

我有一个包含“标签”列表的文档类。 就像是: class Item { string Name { get; set; } List Tags {get; set;} } 现在我想为RavenDB创建一个查询,它将所有按标签列表过滤的项目交给我。 使用entity framework时,我设法通过以下方式执行此操作: var query = GetQueryable(); foreach (var tag in tags) { query = query.Where(i => i.Tags.Contains(tag)); } 但是,这似乎不适用于RavenDB,很可能因为不支持Contains ..我也尝试使用Any重写它,( Where(i => i.Tags.Any(t=>t == tag)) )但这给了我一个奇怪的例外: Unable to cast object of type ‘System.Linq.Expressions.PrimitiveParameterExpression`1[System.String]’ to type ‘System.Linq.Expressions.MemberExpression 有什么好主意吗? 我这样做完全错了吗?

asp.net 5.0 project.json中RavenDB.Client引用的问题

我正在尝试使用新的ASP.NET 5.0(又名Asp.Net vNext)构建一个RavenApiController,并且似乎无法让RavenDB.Client引用完全正常工作。 我得到的错误是 错误CS0246找不到类型或命名空间名称’Raven’(您是否缺少using指令或程序集引用?)SharedIO.ASP.NET Core 5.0 RavenApiController.cs 3 我的project.json如下 { “webroot”: “wwwroot”, “version”: “1.0.0-*”, “exclude”: [ “wwwroot” ], “packExclude”: [ “**.kproj”, “**.user”, “**.vspscc” ], “dependencies”: { “Microsoft.AspNet.Server.IIS”: “1.0.0-beta2”, “Microsoft.AspNet.Diagnostics”: “1.0.0-beta2”, “Microsoft.AspNet.Mvc”: “6.0.0-beta2”, “RavenDB.Client”: “3.0.3599”, “SharedIOModel”: “1.0.0-*” }, “frameworks”: { “aspnet50”: {}, “aspnetcore50”: {} } } 无法在第三行构建的RavenApiController.cs的代码开头为: using System; using Microsoft.AspNet.Mvc; using Raven.Client; using Raven.Client.Document;; […]

RavenDB快速子字符串搜索

我可能有数万亿个字符串序列。 我正在寻找快速子字符串搜索。 我创建了一个索引。 当我试图获得一些结果( x => x.StartWith )时,在300万个对象数据库上花费大约2秒。 5亿个物体需要多长时间? 是否可以更快地进行RavenDB搜索? store.DatabaseCommands.PutIndex(“KeyPhraseInfoByWord”, new Raven.Client.Indexes.IndexDefinitionBuilder { Map = wordStats => from keyPhraseInfo in keyPhraseInfoCollection select new { keyPhraseInfo.Key }, Analyzers = { { x => x.Key, “SimpleAnalyzer”} } });

如何在共享托管环境中运行RavenDB?

RavenDB能够以“嵌入式”模式运行,据我所知,它应该允许它在共享托管环境中运行。 有没有人知道它如何在ASP.NET MVC应用程序中工作,以及这样做的最佳实践是什么? 托管环境中是否存在我需要注意的依赖关系?