标签: ravendb

在 RavenDb 中使用域模型作为文档?

我正在考虑使用我的域模型 (DDD) 作为 RavenDb 中的文档。这是一个坏主意吗?

如果没有,我正在使用TodoListId包含id 的 id 类(如)(在乌鸦的情况下todolists/3等)。我如何告诉 Raven/JSON.NET 将它们用作 ID?

public class TodoListId
{
    public class TodoListId(string id)
    {
        //validate the id and set internal var
    }

    //override ToString to return the id
}

public class TodoList
{
    public TodoList(TodoListId id)
    {}

    public TodoListId Id{get;set;}
    public TodoListId Parent {get;set;}
    public string SomeBasicProperty {get;set;}
}
Run Code Online (Sandbox Code Playgroud)

此外,当我使用 nhibernate 时,我通常将所有 setter 设置为 protected 以确保正确使用域模型。RavenDb 客户端也可以这样做吗?或者不会序列化工作呢?

todoList.Id.ToString()会回来todolists/1

c# domain-driven-design nosql ravendb

2
推荐指数
1
解决办法
594
查看次数

在Map Function中使用SelectMany时,RavenDB索引无法正常工作

根据Ayende的这篇文章,我创建了以下索引定义

public class ProductsSearch : AbstractIndexCreationTask<Product, ProductsSearch.Result>
{
    public class Result
    {
        public string Query { get; set; }
    }

    public ProductsSearch()
    {
        Map = products => from product in products
                          select new
                          {
                              Query = new object[]
                              {
                                  product.Title,
                                  product.Tags.Select(tag => tag.Name),
                                  product.Tags.SelectMany(tag => tag.Aliases, (tag, alias) => alias.Name)
                              }
                          };

        Index(x => x.Query, FieldIndexing.Analyzed);
    }
}
Run Code Online (Sandbox Code Playgroud)

一个区别是我必须使用SelectMany语句来获取标记的别名.标签可以有多个别名(即标签:鼠标别名:指点设备)

我不知道为什么SelectMany行会破坏索引.如果我删除它,索引工作.

ravendb

2
推荐指数
1
解决办法
664
查看次数

RavenDB:向 ID 以外的其他属性添加自动增量

有没有办法在属性上放置一个属性来告诉 RavenDB 像 ID 属性一样使用这个属性并在它上面放置一个自动增量?

伪代码:

public class MyObj {
    public string Id { get; set; }
    [Increment]
    public int OtherProp { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

auto-increment ravendb

2
推荐指数
1
解决办法
1336
查看次数

如何从RavenDB数据库中获取所有实体名称(集合名称)?

我需要检索存在于数据库中的所有RavenDB集合名称.有没有办法做到这一点?怎么样?

c# collections document metadata ravendb

2
推荐指数
1
解决办法
1188
查看次数

如何使用本地系统以外的帐户运行RavenDB作为服务?

我正在尝试安装RavenDB以作为Windows服务运行.默认情况下,它将自己设置为在本地系统帐户下运行,因此我尝试通过在专用帐户下运行来降低安全风险.我已经为程序目录c:\ Program Files\RavenDB和数据目录d:\ Data\RavenDB授予了对文件系统的完全访问权限.但是,当我尝试启动服务时,它立即失败,我在事件日志中收到以下错误:

RavenDB service failed to start because of an error
System.Net.HttpListenerException (0x80004005): Access is denied
   at System.Net.HttpListener.AddAllPrefixes()
   at System.Net.HttpListener.Start()
   at Raven.Database.Server.HttpServer.StartListening() in c:\Builds\RavenDB-Stable\Raven.Database\Server\HttpServer.cs:line 350
   at Raven.Server.RavenDbServer..ctor(RavenConfiguration settings) in c:\Builds\RavenDB-Stable\Raven.Server\RavenDbServer.cs:line 43
   at Raven.Server.RavenService.<OnStart>b__0() in c:\Builds\RavenDB-Stable\Raven.Server\RavenService.cs:line 37
Run Code Online (Sandbox Code Playgroud)

那么,如何配置用户运行RavenDB?我需要授予哪些权限?我已经检查了RavenDB文档和论坛,但没有在任何地方看到这个问题.

windows-services windows-authentication ravendb

2
推荐指数
1
解决办法
698
查看次数

RavenDB - 变形金刚有奇怪的行为

为了在RavenDB查询中使用和执行转换器,我得到了一些奇怪的行为.

假设一个课程Member,这个课程相当漫长而冗长......

class Member {
   // ...
   // Lots of properties, methods
}
Run Code Online (Sandbox Code Playgroud)

我只想获得更轻量级的结果.所以我宣布一个较小的班级.

public class MiniMember {
    public string Id { get; set; }
    public string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

并试图用它来查询它AbstractTransformerCreationTask<T>.

public class MemberByNameList : AbstractTransformerCreationTask<Member> {
    public MemberByNameList() {
        TransformResults = members => from member in members
                                     select new MiniMember {
                                         Id = member.Id,
                                         Name = member.Name
                                     };
    }
}
Run Code Online (Sandbox Code Playgroud)

这在服务器端Studio UI上工作正常,但是当我尝试在我的.NET代码中执行此操作时,我遇到了问题.

        var members = DocumentSession
            .Query<Member>()
            .TransformWith<Indexes.MemberByNameList, …
Run Code Online (Sandbox Code Playgroud)

ravendb

2
推荐指数
1
解决办法
637
查看次数

如何使用HTTP API从Raven获取文档

我们在服务器上部署了Raven,我们的.NET代码可以正常使用它.

当远程控制到盒子上时,我希望能够通过HTTP客户端对Raven进行HTTP调用.

我可以在Raven工作室看到我在一个名为'Locations'的集合中有一个文件,其ID为'locations/1'.Raven正在端口9999上运行,因此在我的HTTP客户端(Postman for Chrome)中,我输入以下GET请求:

http://localhost:9999/docs/locations/1
Run Code Online (Sandbox Code Playgroud)

但是,我总是得到404.

如果我使URL格式错误(例如,通过将'docs'段更改为'documents'),我会收到Raven的回复,告诉我它不知道如何处理请求,所以我必须在正确的位置.Raven似乎告诉我文件不在那里,当我知道它的时候.

有人能提供一些见解吗?

ravendb ravendb-http

2
推荐指数
1
解决办法
421
查看次数

RavenDB 查询元数据

我想防止在我的项目中删除文档,我决定使用元数据将文档标记为已存档。我用下面的代码来做到这一点:

public class DeleteDocumentListener : IDocumentDeleteListener
{
    public void BeforeDelete(string key, object entityInstance, RavenJObject metadata)
    {
        metadata.Add("Archived", true);
        throw new NotSupportedException();
    }
}
Run Code Online (Sandbox Code Playgroud)

之后,我想更改查询以仅返回存档元数据值设置为 false 的文档:

using (var session = _store.OpenSession())
{
   var query = session.Advanced.DocumentQuery<Cutter>()
                .WhereEquals("@metadata.Archived", false);
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,此查询返回空结果集。如果 Document 没有此元数据属性,则上述条件将被视为 false。这不是我所期望的。

如何编写查询以返回没有元数据属性或此属性具有某些值的文档?

ravendb

2
推荐指数
1
解决办法
775
查看次数

对 kubernetes 上的 ravendb 部署进行故障排除

我已经在谷歌云的 3 节点集群上部署了 ravendb。但是它不能从浏览器访问。这是我遵循的程序和配置。你能帮我解决服务和部署问题吗?当我运行 get pods 和 get svc 命令时,pods 和服务正在运行,但无法从浏览器访问数据库。

程序如下:

I suggest you first run the setup wizard on your local dev machine and get the Let's Encrypt certificate. Just use 127.0.0.1:8080 as the IP, it's not important at the moment.
(Even better will be to get your own domain + certificate for production use)

You need to convert both the pfx file and the license.json file to base64, In c# for example:
Convert.ToBase64String(File.ReadAllBytes(@"C:\work\certs\cluster.server.certificate.iftah.pfx"))

Convert.ToBase64String(File.ReadAllBytes(@"C:\work\license.json"))

1. Create a …
Run Code Online (Sandbox Code Playgroud)

ravendb ravenhq kubernetes google-kubernetes-engine kubernetes-ingress

2
推荐指数
1
解决办法
227
查看次数

关于reduce部分RavenDB索引的语法问题,平均计算

我正在为求平均列的正确语法而苦苦挣扎。我所拥有的 - 来自 RavenDB Studio 编辑器:

地图:

from area in docs.Level5_AdministrativeAreas
select new 
{
     area.NAME_4,
     totalPrice = area.pricePerSquareMetre,
     areaCount = 1,
     priceAverage = 0
}
Run Code Online (Sandbox Code Playgroud)

降低:

from result in results
group result by new { result.NAME_4 } into g
select new 
{
   NAME_4 = g.Key.NAME_4,
   totalPrice = g.Sum(x => x.totalPrice),
   areaCount = g.Sum(x => x.areaCount),
   priceAverage = totalPrice / areaCount
}
Run Code Online (Sandbox Code Playgroud)

计数和总价计算正确,但我不知道如何引用totalPriceareaCount

是否需要额外的选择块?我试过“g.totalPrice”和“g.priceAverage”,但它没有被识别。

感谢您的帮助 !

reduce average ravendb ravendb-studio

2
推荐指数
1
解决办法
37
查看次数