c#依赖文件缓存
public void RemovedCallbackRole(string key, object value, CacheItemRemovedReason reason) { // 在应用程序启动时运行的代码 BLL.JUESE bll = new BLL.JUESE(); //显示当前时间,以便判断是否为缓存中页面 //缓存依赖于文件TextFile.txt //string fileDependencyPath = "F:\\View\\code\\cm1test\\Web\\TextFile.txt"; // 设置缓存的过期时间为120秒。 DataTable dt = new DataTable(); dt = bll.GetList(" isdel='0' "); CacheItemRemovedCallback onRemove = new CacheItemRemovedCallback(RemovedCallbackRole); //rolefile 文件物理地址 objCache.Insert("role", dt, new CacheDependency(rolefile), Cache.NoAbsoluteExpiration, Cache.NoSlidingExpiration, CacheItemPriority.High, onRemove); }
在应用程序的Global文件中声明 Cache objCache = null;
void Application_Start(object sender, EventArgs e) { // 在应用程序启动时运行的代码 objCache = HttpRuntime.Cache; RemovedCallbackRole(null, null, 0); } void Application_End(object sender, EventArgs e) { // 在应用程序关闭时运行的代码 HttpRuntime.Cache.Remove("role"); }
在ORacle数据库中创建触发器,当角色表变动的时候更新依赖的文件内容
创建一个directory: create or replace directory FILEPATH as '依赖文件的路径'; grant read,write on directory FILEPATH to 数据库用户; 例如: create or replace directory FILENAME as 'C:\cc'; grant read, write on directory FILENAME to FLZD 创建触发器:
CREATE OR REPLACE TRIGGER "TEST_ROLE" AFTER
INSERT
OR UPDATE
OR DELETE OF "NAME","ROLETYPE" ON "USER"."ROLE"
DECLARE
filehandle utl_file.file_type;
BEGIN
--第三个参数为打开模式,包括'r', 'w', 'a' 'rb', 'wb', 'ab'六种
--'r':读文件,一定要保证有该文件,不然会报UTL_FILE.INVALID_PATH异常
--'w':写文件,没有该文件的话会自动添加;有的话会覆盖
--'a':追加文件,一定要保证有该文件,在已有文件内容后追加内容
--带有'b'后缀的为使用byte模式,BLOB与VARCHAR2不一样,BLOB打开时一定要用带有'b'后缀的模式
filehandle := utl_file.fopen('FILENAME','HELLO.txt','w'); --打开文件
utl_file.put_line(filehandle,'Hello Oracle!');--写入一行记录
utl_file.put_line(filehandle,to_char(SYSDATE,'yyyy-mm-dd hh24:mi:ss'));
utl_file.fclose(filehandle);--关闭句柄
END;