标签: ravendb

如何在RavenDB中选择所有类型的文档

到目前为止,我尝试过以下方法:

public class Widget
{
    public int Id;
    public string Name;
}

public static class Main
{
    public static void Main()
    {
        // Initialize store and preload with widgets...

        using (var session = store.OpenSession())
        {
            var widgets = session.Load<Widget>();
            foreach(var widget in widgets)
            {
                Console.WriteLine(widget.Name);
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我已经能够通过添加索引然后使用该索引作为查询来加载所有:

var store = new DocumentStore();
store.DatabaseCommands.PutIndex("AllWidgets", new IndexDefinition<Widget>
{
    Map = widget => from widget in widgets
                   select new { widget }
});

// Back in Main
var widgets = …
Run Code Online (Sandbox Code Playgroud)

c# ravendb

9
推荐指数
1
解决办法
5455
查看次数

如何在DELETE之后等待RavenDB中的结果更新

我正在使用Raven DB的存储库模式.我的存储库界面是

public interface IRepository<T> where T : Entity
{
    IEnumerable<T> Find(Func<T, bool> exp);
    void Delete(T entity);
    void Save();
    ...
}
Run Code Online (Sandbox Code Playgroud)

并且实施是

public class Repository<T> : IRepository<T> where T : Entity
{
    public IEnumerable<T> Find(Func<T, bool> exp)
    {
        return session.Query<T>().Where(exp);
    }

    public void Delete(T entity)
    {
        session.Delete(entity);
    }

    public void Save()
    {
        session.SaveChanges();
    }
    ...
}
Run Code Online (Sandbox Code Playgroud)

我有一个测试,标记所有实体的删除,保存更改和查询数据库,以查看结果计数是否为零

[Test]
public void DeleteValueTest()
{
    //resolve repository
    var repository = ContainerService.Instance.Resolve<IRepository<DummyType>>();
    Func<DummyType, bool> dummyTypeExpr = item => item.GetType() == typeof(DummyType);

    //find all entries …
Run Code Online (Sandbox Code Playgroud)

c# repository-pattern ravendb

9
推荐指数
1
解决办法
1694
查看次数

在RavenDB中存储对象需要做什么?

我正在使用ravendb序列化一个对象并通过mstest测试它.

我得到了这个结果: System.ArgumentException: Object serialized to String. RavenJObject instance expected.

这是我的代码

public class Store
{
    private static IDocumentStore store = createStore();

    private static EmbeddableDocumentStore createStore()
    {
        var returnStore = new EmbeddableDocumentStore();
        returnStore.DataDirectory = @"./PersistedData";
        returnStore.Initialize();
        return returnStore;
    }

    public static void Write(string value)
    {
        using (var session = store.OpenSession())
        {
            session.Store(value);
            session.SaveChanges();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

似乎根本原因在于RavenJObject如何工作,因为它抛出相同的错误:

RavenJObject storeMe = RavenJObject.FromObject("errors", new JsonSerializer());
Run Code Online (Sandbox Code Playgroud)

如何在RavenDB中进行自定义序列化?

ravendb

9
推荐指数
2
解决办法
3191
查看次数

RavenDB分页行为

我有以下测试跳过 -

    [Test]
    public void RavenPagingBehaviour()
    {
        const int count = 2048;
        var eventEntities = PopulateEvents(count);
        PopulateEventsToRaven(eventEntities);

        using (var session = Store.OpenSession(_testDataBase))
        {
            var queryable =
                session.Query<EventEntity>().Customize(x => x.WaitForNonStaleResultsAsOfLastWrite()).Skip(0).Take(1024);

            var entities = queryable.ToArray();

            foreach (var eventEntity in entities)
            {
                eventEntity.Key = "Modified";
            }

            session.SaveChanges();

            queryable = session.Query<EventEntity>().Customize(x => x.WaitForNonStaleResultsAsOfLastWrite()).Skip(0).Take(1024);

            entities = queryable.ToArray();

            foreach (var eventEntity in entities)
            {
                Assert.AreEqual(eventEntity.Key, "Modified");
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

PopulateEventsToRaven只是将2048个非常简单的文档添加到数据库中.

第一个跳过组合获得前1024个doucuments修改文档,然后提交更改.

下一个跳过组合再次想要获得前1024个文档,但这次它得到文档号1024到2048,因此测试失败.为什么这样,我会再次期待第一个1024?

编辑:我已经变了,如果我不修改文档,行为就好了.

ravendb

9
推荐指数
1
解决办法
691
查看次数

如果我选择RavenDB,我会失去SQL Server的哪些好处?

如果我选择RavenDB作为一个相当标准的类似CMS的Web应用程序,与SQL Server相比,我会失去什么?

编辑:标题中有一个"好处",这是一个有点争议的术语.也许我应该说"可能性"或"功能"之类的东西,希望我很清楚我追求的是什么.

想到的一些事情(但我是RavenDB的新手,所以这只是一些建议,有些可能是错的,我希望有人会提供更完整和准确的列表):

  • 使用ASP.NET动态数据的快速但可自定义的管理界面(有一些内置的Silverlight管理应用程序,但我很确定它不会取代我的情况下完整的管理部分)
  • 可能有一些查询功能?或者Raven索引几乎可以替换我想到的每个SQL查询?
  • 实体框架集成(我知道有些人讨厌EF,但我认为作为EF提供商意味着您可以轻松地将数据发布为OData,使用EF代码优先等等,对吧?)
  • Azure部署 (根据评论不正确)
  • 无数的SQL查询/管理工具

一个更完整/准确的列表将不胜感激.

(注意:我并不是说我需要所有这些(或任何),我只是想了解如果我选择RavenDB会有什么不可用.另外,请不要讨论RavenDB的优势,我知道他们很容易从官方网站上消化.)

sql-server comparison ravendb

9
推荐指数
1
解决办法
3701
查看次数

如何通过C#获取RavenDB文档的上次写入日期

在Raven Studio UI中,当您查看文档时,您可以阅读(在页面右侧)文档的最后写入日期.

我没有通过C#中的客户端API找到此信息的任何访问权限.你知道这是否可能?

ravendb ravendb-studio

9
推荐指数
1
解决办法
1046
查看次数

面向对象和文档数据库之间有什么区别?

面向对象和文档数据库之间有什么区别?

我没有使用面向对象的数据库,但是当我使用文档数据库(RavenDb)时,我存储和读取通常的面向对象的类没有问题.

document-database ravendb object-oriented-database

9
推荐指数
1
解决办法
1645
查看次数

如何在ravendb中限制对管理面板的访问?

默认情况下运行Raven.Server.exe时,管理面板在IP:PORT地址处可见.如何仅限特定用户访问此面板?

ravendb ravendb-studio

9
推荐指数
2
解决办法
1827
查看次数

RavenDB中的索引太多

是否存在一个公式/估计/感觉,根据文档种类数,每个文档的字段数和它们之间的关系数,向我们展示RavenDB数据库中索引的最佳数量是多少?

补充说明:

据我所知(第一)我们在RavenDB中查询索引,而不是文档和(第二)索引就像物化视图一样,因此它们可能会花费很多.我需要知道有多少索引会损害RavenDB在更新它们时的性能并使延迟太大而无法忽略?

由于Raven/MaxNumberOfParallelIndexTasks设置为当前计算机中的处理器数量,因此它意味着其他索引的索引过程将阻塞,直到当前索引任务结束?或者他们是一次又一次的部分更新?

c# performance nosql ravendb

9
推荐指数
1
解决办法
524
查看次数

使用Autofac注册RavenDb?

任何人都可以指导我如何使用Autofac注册RavenDB?

builder.Register<DocumentStore>(那之后呢?

autofac ravendb

9
推荐指数
1
解决办法
1101
查看次数