标签: ravendb

如何创建RavenDB资源管理器?

我想编写自己的简单桌面RavenDB资源管理器,类似于Web UI.这主要是为了学习Raven.

所以我的第一个任务是从数据库中读取所有文档,无论它们属于哪个应用程序.我想使用客户端API实现这一点,但似乎session.Query和session.LuceneQuery都需要类说明符.

我应该使用什么API来完成这项任务?

ravendb

3
推荐指数
1
解决办法
935
查看次数

我怎样才能对ravendb进行查询

我在我的项目中有这个代码,我如何使用Moq来管理文档并设置返回值?

_session.Query<IPageModel, PageByUrl>()
.Customize(x => x.WaitForNonStaleResultsAsOfLastWrite())
.FirstOrDefault(x => x.Metadata.Url == virtualUrl);
Run Code Online (Sandbox Code Playgroud)

这是我在问之前尝试过的

var session = new Mock<IDocumentSession>();
var pageModel = new DummyModel();
session.Setup(x => x.Query<IPageModel, PageByUrl>()
.Customize(y => y.WaitForNonStaleResultsAsOfLastWrite())
.FirstOrDefault(y => y.Metadata.Url == path)).Returns(pageModel);
Run Code Online (Sandbox Code Playgroud)

抛出一个异常,我无法弄清楚如何更改moq

System.NotSupportedException : Expression references a method that does not belong to the mocked object: x => x.Query<IPageModel,PageByUrl>().Customize(y => y.WaitForNonStaleResultsAsOfLastWrite()).FirstOrDefault<IPageModel>(y => y.Metadata.Url == .path)
at Moq.Mock.<>c__DisplayClass1c`2.<Setup>b__1b()
at Moq.Mock.Setup(Mock mock, Expression`1 expression, Func`1 condition)
at Moq.Mock`1.Setup(Expression`1 expression)
at BrickPile.Tests.Web.Routing.PathResolverTests.Home_Page_With_Default_Action(String path) in PathResolverTests.cs: line 26 
Run Code Online (Sandbox Code Playgroud)

nunit moq ravendb

3
推荐指数
2
解决办法
808
查看次数

RavenDB,LINQ,从string []中选择,其中array不包含给定的字符串

给定一个非常简单的string[],我试图用简单的LINQ语法完成以下内容RavenDB.

public class Item {
   public string[] Tags { get; set; }
}
var list = new List<Item> {
  new Item { Tags = new string[] { "one", "two", "three" } },
  new Item { Tags = new string[] { "one", "two" } },
  new Item { Tags = new string[] { "one" } }
};
Run Code Online (Sandbox Code Playgroud)

然后我可以很容易地查询这个,就像这样;

var items = session.Query<Item>().Search( n => n.Tags, "one" ).Take(3).ToList();
Run Code Online (Sandbox Code Playgroud)

这让我可以轻松地获取所有带有string[]我想要的标签的项目,但我想做相反的事情(显然,对于我的用例,情景要复杂得多,我为这个例子凝聚了它).

我想编写一个可以与Raven一起使用的LINQ查询,它将为我提供所有没有给定标记的对象.就像'倒置'搜索一样.

Contains()已从RavenDB中删除,因此我无法在其上使用反布尔值.到现在为止,我只需要进行查询,然后在结果上使用另一个LINQ命令,我觉得效率非常低.有谁知道如何做到这一点?

我也在RavenDB Google …

linq ravendb

3
推荐指数
1
解决办法
1606
查看次数

RavenDB - 使用OR过滤器构建动态查询

我需要能够在运行时使用OR语句构建查询.如果我使用下面的方法来构建查询,那么一切都是AND.我真的需要每个过滤器值为OR才能使此查询正常工作.

public class IdAndRole
{
    public string Id {get;set;}
    public string Role {get;set;}
}

var idAndRoles = session.Query<IdAndRole, Roles_ById>();
foreach(var filter in filterValues)
{
    idAndRoles = idAndRoles.Where(x => x.In(filter.Id) && x.In(filter.Role));
}
Run Code Online (Sandbox Code Playgroud)

伪代码:

(filter[0].Id == value1 && filter[0].Role == role1) ||(filter[1].Id == value2 && filter[1].Role == role2)
Run Code Online (Sandbox Code Playgroud)

c# linq ravendb

3
推荐指数
1
解决办法
976
查看次数

RavenDB索引错误"无法找到名为"的索引

我是新手使用RavenDB并试图让索引在一个简单的MVC3应用程序中工作,该应用程序允许用户输入地理位置.我有两个模型,一个UserModel和一个LocationModel.LocationModel在保存时存储UserId,我正在尝试为此创建索引.

public class Locations_ByUser : AbstractIndexCreationTask<LocationModel>
    {
        public Locations_ByUser()
        {
            Map = locations => from location in locations
                            select new { location.UserId };

        }
    }
Run Code Online (Sandbox Code Playgroud)

我正在使用以下代码注册索引

protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();

            RegisterGlobalFilters(GlobalFilters.Filters);
            RegisterRoutes(RouteTable.Routes);

            //ADD THE MODEL BINDER FOR LIST TO STRING
            ModelBinders.Binders.Add(typeof(TestAPI.Models.LocationModel), new TestAPI.Classes.LocationModelBinder());

            //INIT THE STORE, DO ONCE PER APP START
            TestAPI.Classes.DataDocumentStore.Initialize(); 

            //SET THE INDEXES
            IndexCreation.CreateIndexes(typeof(Locations_ByUser).Assembly, TestAPI.Classes.DataDocumentStore.Instance);
        }
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试从mvc应用程序调用索引时

[HttpGet]
        public ActionResult Index()
        {

            var result = this.DocumentSession.Query<LocationModel>("Locations_ByUser").ToList();
            foreach (var userid in result)
            {
                Console.Out.WriteLine(userid);
            }

            return View();
        } …
Run Code Online (Sandbox Code Playgroud)

.net indexing ravendb asp.net-mvc-3

3
推荐指数
1
解决办法
1966
查看次数

从RavenDB订购结果

我正在使用RavenDB并在尝试订购结果时遇到问题.

这是一个类的示例.

public class Post {
    public int Id {get;get;}
    public DateTimeOffset Posted {get;set;}
    public List<SectionAssignment> Sections{get;set;}
    public string Headline {get;set;}
}
public class SectionAssignment {
    public int SectionId {get;set;}
    public int Priority {get;set;}
}
Run Code Online (Sandbox Code Playgroud)

在我的控制器中,我试图返回一组分配给特定部分的帖子,然后按(desc)命令发布属性的日期部分.然后我想按SectionAssignment Priority排序.这是我得到的:

var posts= RavenSession.Query<Post>()
    .Where(s => s.Sections.Any(sec=>sec.SectionId==5))
    .OrderByDescending(s => s.Posted.Date)
    .ThenBy(s => s.Section.Where(sec => sec.Id == 5).Select(sc => sc.Priority).Single())
    .Take(10)
    .ToList();
Run Code Online (Sandbox Code Playgroud)

我是以下例外:

无法将类型为"System.Linq.Expressions.MethodCallExpressionN"的对象强制转换为"System.Linq.Expressions.MemberExpression".

我可以看到为什么会这样,但我无法弄清楚如何使这项工作.有什么建议?

linq ravendb

3
推荐指数
1
解决办法
487
查看次数

在ravenDB中按截止日期删除批处理中的文档

我试图删除比ravenDB中的某个点更旧的文档.我仍然不熟悉Lucene,并且很难构建这个查询.

        _Session.Advanced.DatabaseCommands.DeleteByIndex(
            typeof(AssetsByExpirationDate).Name,
            new IndexQuery()
            {
                Query = string.Format("ExpirationDate:[\"{0:MM/dd/yyyy}\" TO \"{1:MM/dd/yyyy}\"]", DateTime.MinValue, new DateTime(2012,6,1))
            });
Run Code Online (Sandbox Code Playgroud)

查询在特定日期之前删除项目的正确语法是什么?

c# ravendb

3
推荐指数
1
解决办法
1617
查看次数

从RavenDB获取JSON数据

我有一个Asp.Net MVC3应用程序,它使用嵌入式RavenDB来存储数据.视图需要以这种方式由控制器创建的json数据:

    public ContentResult Data()
    {
        var res = JsonConvert.SerializeObject(DocumentSession.Query<DataObject>());
        return new ContentResult { Content = res, ContentType = "application/json" };
    }
Run Code Online (Sandbox Code Playgroud)

一切正常但对我而言似乎效率低下,因为以JSON格式存储在DB中的数据在POCO中序列化,然后再次反序列化.

有没有更直接的方法直接从嵌入式数据库获取json数据?

json ravendb asp.net-mvc-3

3
推荐指数
1
解决办法
1312
查看次数

RavenDB,只有用嵌入式数据库存储数据的方法是在'系统数据库'中?

我使用嵌入式数据库,并想知道对数据进行操作的唯一方法是使用系统数据库吗?我查看了管理工作室,看到我的所有数据都被转储到系统数据库中.即使我在管理工作室内创建了一个新的数据库,这个新的数据库仍未受到影响.使用代码方法我没有进一步深入,因为在嵌入式实例中似乎不支持多租户.那么唯一的方法是存储和访问SYSTEM DATABASE的数据?

谢谢

c# database ravendb ravendb-studio

3
推荐指数
1
解决办法
769
查看次数

RavenDB(4.0-beta):如何全文​​搜索动态属性

我想使用RavenDb 4.0.0-beta-40018查询包含动态属性的实体,但我不确定如何操作.

class Foo {
    public int Id { get; set; }
    public DateTime CreatedAt { get; set; }
    public string Name { get; set; }
    public dynamic Attributes { get; set; }
}

{
    "Attributes": {
        "IsFeatured": true
    },
    "CreatedAt": "2017-08-30T15:53:21.1881668Z",
    "Name": "Featured Foo"    
}
Run Code Online (Sandbox Code Playgroud)

这是我试图使用的查询.

const string propertyName = "IsFeatured";

var results = session.Query<Foo>()
        .Where(x => x.Attributes != null)
        .Where(x => x.Attributes[propertyName] != null)
        .Where(x => x.Attributes[propertyName] == true);
Run Code Online (Sandbox Code Playgroud)

遗憾的是,我甚至无法编译此代码,因为我收到编译错误(Error: An expression tree may not contain a …

full-text-search ravendb

3
推荐指数
1
解决办法
100
查看次数