Tag: ravendb

如何在C#中为RavenDB正确创建Map / Reduce索引

我正在开发一个在后端使用RavenDB的应用程序。 这是我第一次使用Raven,而我正在努力使用Map / Reduce。 我一直在阅读文档 ,但不幸的是我在这个过程中没有任何进展。 基本上我有成千上万的这样的文件。 { ….. “Severity”: { “Code”: 6, “Data”: “Info” }, “Facility”: { “Code”: 16, “Data”: “Local Use 0 (local0)” }, ….. } 在其中,我需要使用看起来像这样的输出进行单个查询。 {“Severity”: [ {“Emergency”:0}, {“Alert”:0}, {“Critical”:0}, {“Error”:0}, {“Warning”:0}, {“Notice”:0}, {“Info”:2711}, {“Debug”:410} ], “Facility”: [ {“Kernel Messages”:0}, {“User-Level Messages”:0}, {“Mail System”:0}, {“System Daemons”:0}, {“Security/Authorization Messages”:0}, {“Internal Syslogd Messages”:0}, […]

RavenDB Map / Reduce属于列表的属性

刚刚学习Map / Reduce,我错过了一步。 我已经阅读过这篇文章( 使用.NET客户端的RavenDB Map-Reduce示例 ),但不能完全跳到我需要的地方。 我有一个对象: public class User : IIdentifiable { public User(string username) { Id = String.Format(@”users/{0}”, username); Favorites = new List(); } public IList Favorites { get; protected set; } public string Id { get; set; } } 我想要做的是在所有用户中获取Map / Reducecollections夹属性。 像这样的东西(但这显然不起作用): Map = users => from user in users […]

RavenDB OrderBy

在我的C#应用​​程序中,我有一个对象集合,其int Order属性范围从1到n 。 当我喜欢这样的时候: var listings = session.Query().Where(x => !x.IsDeleted && x.CategoryId == category.Id && x.WorkflowStatus == WorkflowStatus.Published).OrderBy(x => x.Order); 我得到了一系列列表,但没有按正确的顺序100%。 按顺序,顺序如下: 0, 1, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 2, 20, 21, 22, 23, 24, 25, 26, 28, 29, 3, 30, 31, 32, 33, 4 …. 知道为什么OrderBy没有完全按照它应该做的事情吗?

使用非当前Etag错误尝试使用文档

我正在阅读流行的Pro ASP.NET MVC 5书并构建Sports Store应用程序,但我使用的是RavenDb而不是Entity Framework。 最初,我通过本地API(而非通过代码)在Raven中创建了产品记录。 我给记录一个手册ID,并为每个产品创建了json字段和值 – 总共9个。 然后我写了加载这些产品的应用程序部分,一切都很好。 数据返回完全符合我的预期。 但是,当我到达允许用户通过MVC接口创建新记录的应用程序部分时,我在IDocumentSession上调用SaveChanges()函数时遇到了崩溃。 这是错误的全文: Server Error in ‘/’ Application. PUT attempted on document ‘products/9’ using a non current etag Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where […]

伪造/模拟接口给出“没有默认构造函数”错误,怎么会这样?

我正在尝试编写存储库实现的unit testing。 存储库使用RavenDB作为数据库。 对于unit testing,我想模拟RavenDB部分。 为了创造嘲笑(假货)我正在使用FakeItEasy。 我认为由于RavenDB API是通过接口访问的,因此模拟/伪装不会有任何问题。 但是,在尝试实例化特定模拟时,我确实遇到了问题。 我的unit testing代码的相关部分如下所示: [Fact] public void Test() { UserDocument doc = …; IQueryable where = A.Fake<IQueryable>(); A.CallTo(() => where.First()).Returns(doc); IRavenQueryable query = A.Fake<IRavenQueryable>(); IDocumentSession session = A.Fake(); A.CallTo(() => session.Query()).Returns(query); IDocumentStore store = A.Fake(); A.CallTo(() => store.OpenSession()).Returns(session); . . . } 在实例化IRavenQueryable假的时候,我得到了一个exception。 这是来自Xunit.net跑步者的日志: UnitTest.Test : FakeItEasy.Core.FakeCreationException : […]

如何在Ravendb中反向索引相关文档

在索引相关文档的示例II中,按名称和书名称在作者上构建索引。 相关实体看起来像这样: public class Book { public string Id { get; set; } public string Name { get; set; } } public class Author { public string Id { get; set; } public string Name { get; set; } public IList BookIds { get; set; } } 即只有Author持有关于该关系的信息。 该信息用于构造所述索引。 但是我如何构建一个关于Books by Authors的索引(假设一本书可能有多个作者)? 编辑: 这本书/作者的比喻只是到目前为止。 我将举一个更接近我实际用例的例子: […]

Guid导致格式exception

我正在尝试设置RavenDb 3.5和NServiceBus 6.在我输入我在NServiceBus端点中设置的传奇之后,我输入了一个处理程序。 完成此处理程序后,我收到此错误: System.FormatException:Guid应包含32位数字,包含4个破折号(xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)。 我的代码: public static class AutoFacConfig { public static IContainer ConfigureAutofac() { var builder = new ContainerBuilder(); var resourceManagerId = new Guid(“6c9abcbb-c7ca-4a67-a149-5142f633f535”); var dtcRecoveryBasePath = Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData); var recoveryPath = Path.Combine(dtcRecoveryBasePath, “NServiceBus.RavenDB”, resourceManagerId.ToString()); builder.Register(x => { var store = new DocumentStore { ConnectionStringName = “RavenDB”, ResourceManagerId = resourceManagerId, TransactionRecoveryStorage = new LocalDirectoryTransactionRecoveryStorage(recoveryPath) […]

EventStore + RavenDB,没有反序列化正确

尝试使用RavenDB的JOliver CommonDoman / EventStore 3.0,它可以很好地存储事件,但是当尝试使用IRepository.GetById()加载聚合根时,反序列化会出现问题。 给出错误消息“无法将类型为’Raven.Abstractions.Linq.DynamicList’的对象’转换为’System.Collections.Generic.List`1 [EventStore.EventMessage]’。” 在DocumentObjectSerializer.cs, public T Deserialize(object document) { Logger.Verbose(Messages.DeserializingStream, typeof(T)); return (T)document; } 其中T是List 我用来获取文档的代码是这样的: var r = _repository.GetById(command.Id); //where _repository is CommonDomain.Persistence.EventStore.EventStoreRepository //the EventStore wire up is, return Wireup.Init() .UsingRavenPersistence(“RavenDB”) .UsingSynchronousDispatchScheduler(bus) .Build();

RavenDB与Transaction Scope不能很好地协作

我有以下测试用例,我希望通过。 但它没有通过RavenDB。 如果我使用MsSql创建完全相同的测试,它确实通过。 var connectionString = “Url=http://localhost:8080”; var store = new DocumentStore(); store.ParseConnectionString(connectionString); store.Initialize(); using (var scope = new TransactionScope()) using (var session = store.OpenSession()) { session.Store(dog); session.SaveChanges(); var dogs = session.Query().Customize(x => x.WaitForNonStaleResults()).ToList(); Assert.AreEqual(1, dogs.Count); scope.Complete(); } 我正在尝试编写一些相同的代码,无论我选择什么数据库,这只是我试图通过的测试用例的一个例子。 我尝试了各种各样的东西,比如waitfornonstaleresults,以及allownonautheitative..something等等。

如何同步nosql db(ravendb)中的更改

我已经开始在RavenDB的例子中学习NoSQL了。 我从一个最简单的模型开始,假设我们有由用户创建的主题: public class Topic { public string Id { get; protected set; } public string Title { get; set; } public string Text { get; set; } public DenormalizedUser User { get; set; } } public class DenormalizedUser { public string Id { get; set; } public string Name { get; set; } } […]