【问题标题】:Is embedded RavenDB and MVC possible?嵌入式 RavenDB 和 MVC 可能吗?
【发布时间】:2023-03-08 17:45:01
【问题描述】:

我想将 asp MVC 与 Embedded RavenDB 一起使用,但看起来 DB 在调试 MVC 应用程序时没有反应(使用 VS 2010 和 IIS 7.5 Express)。例如,在 MVC 操作中,我编写了一个对象并尝试在下一步从数据库中读取它,但直到下一个请求才找到该对象。对我来说,嵌入式 RavenDB 似乎只能在 MVC 应用程序处于空闲状态时侦听请求。

如果我从嵌入式更改为普通客户端/服务器,它可以正常工作。我更喜欢使用嵌入式 RavenDB。也许有人对这个问题有一些经验?!

【问题讨论】:

    标签: asp.net-mvc ravendb


    【解决方案1】:

    内存数据库需要时间来做事,所以你可能会得到陈旧的结果。

    来自这个问题的 nostalequerieslistener 应该会有所帮助:RavenDB how to flush?

    我在单元测试中遇到了这个问题,基本上,虽然内存中的 RavenDB 速度很快,但插入和查询对象之间的少量代码更快。

    【讨论】:

    • 谢谢,看来这是主要问题。
    • 我不明白为什么这应该特定于嵌入式实例?除此之外 - 请注意,NoStaleQueriesListener 是你能做的最糟糕的事情之一,因为它几乎消除了文档数据库的所有好处,更糟糕的是,它可能会破坏整个应用程序的性能
    • @DanielLang 简单。在嵌入式数据库的情况下,客户端和服务器之间的延迟为 0。即使只有 1 毫秒的延迟,RavenBD 也可以完成很多工作。每次往返加起来最多 2 毫秒,不包括实际进行通信的一点点时间。此外,由于嵌入式与应用程序共享资源更加紧密,应用程序很可能会在保存更改和确保在 RavenDB 执行任何操作之前确保其存在之间的极短时间。
    【解决方案2】:

    您可以使用嵌入的 RavenDB,没有任何缺点,只是在创建 EmbeddableDocumentStore 时,您的应用程序启动时间会更长一些,但无需担心。

    您应该记住的唯一一件事是,虽然您可以无缝地从嵌入式切换到客户端/服务器,但在(极少数)情况下,您无法在不修改代码的情况下另辟蹊径。例如,惰性功能在嵌入式会话中不可用,因为在那里没有意义。

    【讨论】:

    • 如果您正在调试 mvc 应用程序 (localhost:53996),您可以在不同的端口 (localhost:8080) 上输入 RavenDB-Web-Interface 吗?我在调试 mvc 应用程序时无法进入 RavenDB-Web-Interface?!我遵循此页面primaryobjects.com/CMS/Article125.aspx 的指示(但我采用嵌入式 RavenDB)。
    • 是的,只需将 UseEmbeddedHttpServer 设置为 true 并根据需要设置端口。
    • 奇怪我新建一个项目再检查一遍,可能是配置有问题。
    • 在 VS 中我发现了一个配置 Debugging-> Option Settings -> Stop all Process 已启用。也许这影响了调试会话。
    【解决方案3】:

    您可以轻松集成。这可能会有所帮助。 http://msdn.microsoft.com/en-us/magazine/hh547101.aspx

    如果解决了您的问题,请标记为答案。

    【讨论】:

    • 我下载了本教程的代码并对其进行了修改,以便在创建操作中我在插入书签之前查询数据库,然后再插入书签。尽管添加了新项目,但两个查询都返回空列表。首先我认为这是一个缓存问题,使用 WaitForNonStaleResultsAsOfLastWrite 问题似乎得到了解决。
    【解决方案4】:

    RavenDB 实现了工作单元模式。完成后,您是否在文档会话中调用SaveChanges

    【讨论】:

    • 是的,我做 session.SaveChanges();和 session.Dispose();
    • 奇怪。我使用嵌入式版本没有任何问题。确保您在更改某些内容时确实致电SaveChanges()
    【解决方案5】:

    是的。

    查看这篇文章以获取使用最佳实践的完整示例:

    RavenDB, UnitOfWork and MVC - revisited

    【讨论】:

    • 谢谢,我会注意的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-23
    • 1970-01-01
    • 1970-01-01
    • 2010-12-12
    • 1970-01-01
    相关资源
    最近更新 更多