标签: ravendb

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

我有一个包含"标签"列表的文档类.就像是:

class Item {
  string Name { get; set; }
  List<string> Tags {get; set;}
}
Run Code Online (Sandbox Code Playgroud)

现在我想为RavenDB创建一个查询,它将所有按标签列表过滤的项目交给我.使用实体框架时,我设法通过以下方式执行此操作:

var query = GetQueryable();
foreach (var tag in tags)
{
   query = query.Where(i => i.Tags.Contains(tag));
}
Run Code Online (Sandbox Code Playgroud)

但是,这似乎不适用于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
Run Code Online (Sandbox Code Playgroud)

有什么好主意吗?我这样做完全错了吗?

c# linq ravendb

17
推荐指数
1
解决办法
7531
查看次数

Raven DB:如何删除给定类型的所有文档

更具体地说,在Raven DB中,我想创建一个带有签名的泛型方法;

public void Clear<T>() {...
Run Code Online (Sandbox Code Playgroud)

然后让Raven DB清除给定类型的所有文档.

我从Ayende的其他帖子中了解到类似的问题,你需要一个索引就可以批量执行此操作.

我认为这将涉及创建一个映射每种文档类型的索引 - 这看起来像很多工作.

有没有人知道创建一个像上面那样直接在数据库中进行集删除的方法的有效方法?

ravendb

17
推荐指数
3
解决办法
9777
查看次数

告诉RavenDB忽略一个属性

我有一个文档模型存储在RavenDB中,但我不想存储计算属性.如何告诉RavenDB忽略此属性?

在下面的例子中,我不想存储Duration.

public class Build
{
    public string Id { get; set; }
    public string Name { get; set; }
    public DateTime StartedAt { get; set; }
    public DateTime FinishedAt { get; set; }

    public TimeSpan Duration { get { return StartedAt.Subtract(FinishedAt); }}
}
Run Code Online (Sandbox Code Playgroud)

c# ravendb

17
推荐指数
1
解决办法
3689
查看次数

如何在没有实体框架的MVC中使用SimpleMembership

使用SimpleMembership(ASP.NET MVC 4)与RavenDB(或其他数据库)而不是SQL Server的必要步骤是什么?

我习惯于覆盖MembershipProvider,但它如何与新的SimpleMembership一起使用?

我看到有一个SimpleMembershipProvider所以我认为我应该覆盖它,但我不知道这些方法是仅用于存储数据目的还是它们应该包含业务/验证逻辑)...

配置怎么样?我知道InitializeDatabaseConnection方法通常负责初始化整个shebang,但如果我不使用Entity Framework,我认为不应该调用它.

不幸的是,除了两个不太有用的链接之外,我没有找到关于新SimpleMembership的大量资源:

http://igambin.blogspot.ca/2012/08/simplemembershipprovider-huh.html

http://blog.osbornm.com/archive/2010/07/21/using-simplemembership-with-asp.net-webpages.aspx

asp.net ravendb asp.net-mvc-4

17
推荐指数
1
解决办法
7318
查看次数

在RavenDB中更新文档

如果在持久化实体上添加,删除或重命名属性,那么在RavenDB中更新文档的最简单方法是什么?

ravendb

16
推荐指数
2
解决办法
9296
查看次数

RavenDB会话> 30

如果我想保存一个我要保存的项目列表,其数量> 30,我会收到错误消息

已达到此会话允许的最大请求数(30).Raven限制允许会话作为早期预警系统进行的远程调用的数量.会话预计会很短暂,并且Raven提供了诸如Load(string []键)之类的工具来一次加载多个文档并批量保存.

我该怎么做才能解决这个问题?这个错误的问题是我没有加载,我正在尝试保存文档.任何想法,将不胜感激.谢谢

c# linq document-database ravendb

16
推荐指数
2
解决办法
5347
查看次数

是否可以使用Raven Management Studio连接到嵌入式数据库

我正在玩Raven DB,我想知道是否可以使用Raven Management Studio连接到嵌入式数据库.有没有人这样做过?

ravendb ravendb-studio

16
推荐指数
1
解决办法
4371
查看次数

RavenDB Ids和ASP.NET MVC3路由

只需使用MVC 3 RC2和RavenDB构建一个快速,简单的站点来测试一些东西.

我已经能够制作一堆项目,但我很好奇Html.ActionLink()如何处理乌鸦数据库ID.

我的例子:我有一个名为"reason"的文档(一个事情的原因,主要是文本),它有原因文本和链接列表.我可以通过我的存储库添加,删除和完成其他所有操作.

下面是我的剃刀视图的一部分,它列出了项目符号列表中的每个原因,并将编辑链接作为第一个文本:

@foreach(var Reason in ViewBag.ReasonsList)
{
    <li>@Html.ActionLink("Edit", "Reasons", "Edit", new { id = Reason.Id }, null) @Reason.ReasonText</li>
    <ul>
    @foreach (var reasonlink in Reason.ReasonLinks)
    { 
        <li><a href="@reasonlink.URL">@reasonlink.URL</a></li>
    }
    </ul>
}
Run Code Online (Sandbox Code Playgroud)

问题

除编辑链接外,此方法正常.虽然这里的值和代码似乎直接起作用(即链接直接触发),但RavenDB将我的文档ID保存为"reason/1".

因此,当URL发生并且它传递ID时,结果路由是"http:// localhost:4976/Reasons/Edit/reasons/2".因此,ID被正确附加,但MVC将其解释为自己的路由.

关于我如何能够解决这个问题的任何建议?我是否需要创建一个特殊的路线来处理它或者我还能做些什么吗?

asp.net-mvc actionlink ravendb asp.net-mvc-3

15
推荐指数
2
解决办法
2333
查看次数

我应该将RavenDB作为Windows服务还是通过IIS运行?

我正在使用RavenDB作为应用程序的数据存储的想法,该应用程序很可能具有HTML UI,WebService UI和将访问数据的服务器实用程序.使用RavenDB的一个原因是它通过复制和分片提供的水平扩展.但是,似乎有几个关于将Raven作为Windows服务运行或通过IIS运行的考虑因素.

  • 安全性 - Raven服务更安全或使用IIS允许我更灵活地通过IP地址,.NET成员资格等进行限制.
  • 缓存 - 似乎IIS是此功能的更好选择
  • 架构 - 由于我不希望任何第三方访问数据存储,因此通过IIS公开Raven真的很有意义.此外,Raven与各种UI和实用程序之间会有一个业务层,因此涉及IIS似乎是不必要的,可能会引入不必要的复杂性.
  • 性能 - IIS管道可能比Windows服务在每个请求上有更多的开销
  • 扩展 - 使用IIS可能更难以跨多个服务器扩展,而不是仅使用小批量文件安装Raven服务

EDITED

我可以理解使用Raven的嵌入式配置,如果您拥有的只是一个Web客户端,但是当您拥有多个不同的客户端时,Raven的API需要独立公开以防止单个客户端锁定数据文件.

architecture ravendb

15
推荐指数
2
解决办法
2247
查看次数

RavenDB:在内存中获取异常文档存储"Voron在32位模式下容易出现故障."

遵循RavenDB的文档后

http://ravendb.net/docs/article-page/2.5/csharp/samples/raven-tests/createraventests

我无法成功通过内存文档存储的创建来运行单元测试.我使用RavenDB的RavenTestBase复制并粘贴了上面文档中的测试样本.

[TestClass]
public class IndexTest : RavenTestBase
{
    [TestMethod]
    public void CanIndexAndQuery()
    {
        using (var store = NewDocumentStore())
        {
            new SampleData_Index().Execute(store);

            using (var session = store.OpenSession())
            {
                session.Store(new SampleData
                {
                    Name = "RavenDB"
                });

                session.SaveChanges();
            }

            using (var session = store.OpenSession())
            {
                var result = session.Query<SampleData, SampleData_Index>()
                    .Customize(customization => customization.WaitForNonStaleResultsAsOfNow())
                    .FirstOrDefault();

                Assert.Equals(result.Name, "RavenDB");
            }
        }
    }
}

public class SampleData
{
    public string Name { get; set; }
}

public class SampleData_Index : AbstractIndexCreationTask<SampleData>
{
    public SampleData_Index()
    { …
Run Code Online (Sandbox Code Playgroud)

unit-testing ravendb

15
推荐指数
1
解决办法
1664
查看次数