码迷,mamicode.com
首页 > 数据库 > 详细

DMSFrame 之SqlCacheDependency(一)

时间:2015-06-08 14:54:51      阅读:176      评论:0      收藏:0      [点我收藏+]

标签:

1.SqlCacheDependency都是我们常用的一种Cache写法了。对后面的SQL 2005算是比较成熟的一种缓存模式了,这里介绍一下DMSFrame的SqlCacheDependency是怎么使用的

DMSFrame已内置MSSQL的通知模式(MSSQL2005以上,含2005)和轮循模式(MSSQL2005以下)的缓存写法。

 

查看数据库是否支持通知模式

SELECT  DATABASEPROPERTYEX(DATABASENAME,IsBrokerEnabled) 1 表示启用,0表示未启用

启用IsBrokerEnabled

ALTER DATABASE [DATABASENAME] SET NEW_BROKER WITH ROLLBACK IMMEDIATE;
ALTER DATABASE [DATABASENAME] SET ENABLE_BROKER;/ALTER DATABASE [DATABASENAME] SET DISABLE_BROKER;

设置权限信息

GRANT SUBSCRIBE QUERY NOTIFICATIONS TO [当前数据库登录用户名,如果是sa可以跳过]

修改登录账号信息,这里比较关键,如果未设置有可能通知是没有权限的。具体也可以看看SQL日志信息

exec sp_changedbowner @loginame = [当前数据库登录用户名,如果是sa,则使用sa账号]

首先添加web.config的配置信息

<configSections>
    <section name="DMSLinqCacheProvider" type="DMSFrame.Cache.DMSLinqCacheProvider,DMSFrame"/>
  </configSections>
  <DMSLinqCacheProvider>
    <add key="provider" providerName="MsSql" value="DMSFrame.Cache.DMSLinqSqlWebCacheNotifyProvider,DMSFrame"/>
  </DMSLinqCacheProvider>

 

 

最最重要的TableConfig配置数据库加上标记CacheDependency,已便支持CacheDependency

<TableConfiguration>
    <Name>DefaultValue</Name>
    <SqlType>MsSql</SqlType>
    <WithLock>false</WithLock>
    <Author>dbo</Author>
    <CacheDependency>true</CacheDependency>
    <ConnectString>Integrated Security=False;server=127.0.0.1;database=database;User ID=sa;Password=sa;Connect Timeout=30</ConnectString>
  </TableConfiguration>

 

最后就是查询SQL了,

ToList(bool DependencyFlag) 增加了是否使用缓存的标记参数。
var resultAccess = DMS.Create<Adm_User>()
                .Where(q => q.UserID == 1)
                .Select(q => q.Columns(q.UserID, q.UpdateTime)).ToList(true);

 

通知模式的SQL运行跟踪如图:

技术分享

 

DMSFrame 之SqlCacheDependency(一)

标签:

原文地址:http://www.cnblogs.com/kingkoo/p/4560822.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!