entity-framework - 带有 SQL 服务代理的 Entity Framework

标签 entity-framework service-broker

我想知道如何/是否可以在 EF4.x 或 EF5 中使用 SQL Service Broker?

设想:
说,我有一个产品列表,我不想每次客户访问页面时都从数据库加载它。当然我可以缓存页面,但是如果产品经理添加了一个新产品,它不会立即显示,直到缓存过期或查询参数更改。

解决方案:
在 SQL 中,我们可以 Enable_Broker 并在 web 应用程序中启动链接 SqlDependency。 SQL 将向我们的 Web 应用程序发送通知。因此,我们有一个智能的“缓存”系统。
如果我们可以使用智能缓存,那一切就都有意义了。当有 1,000 个客户单击该页面时,我们不需要访问 SQL 数据库 1,000 次。但是一旦db发生变化,当时访问该页面的第一个客户就会看到反射。我们两全其美。

问题:
Entity Framework 没有公开这种能力。还是我不知道?从 SQL 2005 和 ASP.NET 2.0 开始就已经具备了这种能力。 EF 4/5 不会错过这个重要功能,对吧?我需要一些专家来帮助我解决这个问题。

我碰巧从这个链接中找到了一个黑客:

http://www.codeproject.com/Articles/233770/AutoRefresh-Entity-Framework-data-using-SQL-Server

然而,它或多或少是一种“未记录的魔法”方式,并且有一些未知的限制(该页面的限制链接已被删除,所以我不知道它们是什么)。所以,它对我来说不够可靠,如果在一个新的 EF 补丁后它突然不起作用,我不会感到惊讶。有没有更“官方”的方法来做到这一点?谢谢!

最佳答案

LinqToCache ,它可以通过任意 LINQ 查询的 SqlDependency 进行缓存。说到EF,归结起来就是EF创建的SQL查询是否符合Query Notifications的限制。上次我检查 EF 是在请求​​中无缘无故地添加一个子查询,从而使查询不可通知。我听说最新的 EF 更好,它可能有效,但我自己还没有测试过。

关于entity-framework - 带有 SQL 服务代理的 Entity Framework ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10639170/

相关文章:

sql-server - 如果目标重新启动,则不会发送 Service Broker 消息

sql-server-2008 - 如何调试从 SQL Server 2008 中的 Service Broker 队列运行的存储过程?

sql-server - 从 SQL Server Service Broker 调用带有 SSISDB 实现的 SSIS

sql-server - 我可以在所有数据库上打开服务代理吗?

asp.net-mvc - WebGrid 和 EF4 属性

C# Entity Framework : correct use of DBContext class inside your repository class

c# - EntityFramework 中实体实例的性能影响

c# - 将多个导航属性配置到同一个表时出错

c# - Entity Framework 查询中的用户 trimstart

sql-server - 无法复制从 SQL Server 中创建的安全证书文件