CYQ.Data 轻量数据层之路 应用示例三 Aop切入留言系统--操作日志(二十七)

前言:

在8月份时,那时曾用CYQ.Data 1.2版本演示过一个完整的示例,留言版:详见:CYQ.Data 轻量数据层之路 应用示例一 留言版(四)
本篇将使用2.N系列版本,在不改动原来留言版系统一行代码的情况下,实现其数据库操作日志功能。

最新版本下载见:CYQ.Data 轻量数据层之路 bug反馈、优化建议、最新框架下载

 

 

正文步骤:

 

一:建表

1:增加一个日志操作表[ActionLogs],这个少不了,表结构如下

2:创建表的数据库脚本如下:

创建ActionLogs表

 

 

二:建类库项目独立实现操作日志

1:新建一个项目类库起名就叫:AopLog,同时添加对CYQ.Data.DLL的引用[2.N系列版本]

2:新建一个类,继承自CYQ.Data.Aop.IAop接口,并实现之如:


    public class AopLog : IAop
    {

        #region IAop 成员

         public void Begin(AopEnum action, string objName, params object[] aopInfo)
        {
            //这里先没用到,用于权限判断
        }

        public void End(AopEnum action, bool success, object id, params object[] aopInfo)
        {
            //这里等会要实现
        }

        public IAop GetFromConfig()
        {
            return null;//默认这样就行了
        }

        public void OnError(string msg)
        {
            //这里先没用到,数据库操作异常时引发
        }

        #endregion
    }

 

3:我们将具体实现分流到另一个类处理:新建类:ActionLog.cs,并预先留下方法接口:


public class ActionLog
{
    public void WriteFill(object id)
    {
    }
    public void WriteInsert(object id)
    {    
    }

    #region 其它方法
     private int GetUserID()
    {
    }
    private void Write(object id, string msg)
    {   
    }
    private bool ContainUrl(string key)
    {     
    }
    #endregion
}

 

4:回到AopLog实现方法

AopLog 实现 只是添加了一个构造函数和实现End方法

5:实现ActionLog方法

a:从Session获取用户ID


       private int GetUserID()
        {
            int id=0;
            if (HttpContext.Current.Session["ID"] != null)
            {
                int.TryParse(Convert.ToString(HttpContext.Current.Session["ID"]), out id);
            }
            return id;
        }

b:插入表数据方法封装


        private void Write(object id,string msg)
        {
            int userID = GetUserID();
            if (userID == 0)
            {
                int.TryParse(Convert.ToString(id), out userID);
            }
            if (userID > 0)
            {
                MAction action = new MAction(TableNames.ActionLogs);
                action.SetNoAop();//写日志时,注意关掉Aop功能。
                action.Set(ActionLogs.UserID, userID);
                action.Set(ActionLogs.Msg, msg);
                action.Insert();
                action.Close();
            }
        }

c:检测Url是否包含指定字符

        private bool ContainUrl(string key)
        {
            return System.Web.HttpContext.Current.Request.Url.ToString().ToLower().Contains(key);
        }

d:实现登陆日志记录

        public void WriteFill(object id)
        {
            if (ContainUrl("login.aspx"))
            {
                Write(id,"登陆成功!");
            }
        }

e:实现注册日志与留言日志记录


        public void WriteInsert(object id)
        {
            if (ContainUrl("reg.aspx"))
            {
                Write(id,"注册成功!");
            }
            else
            {
                Write(id,string.Format("添加一行留言[id={0}]!",id));//需要启用更多分支时,请使用"params object[] aopInfo信息[这个需要修改界面参数代码]"
            }
        }

 

 

三:切入原有留言版系统

1:将类库生成的AopLog.dll放到留言系统的Bin目录下

2:升级原来CYQ.Data.DLL的1.2版本到最新版本。[完全兼容,直接复盖升级]

3:配置文件appSettings项增加一行配置:<add key="Aop" value="AopLog,AopLog.AopLog"/>

 

四:运行结果

1:操作登陆、注册、留言!!!数据库记录结果如下图:

 

五:示例下载

点击下载 [为节省空间,删除了生成的dll,请重新引用dll编绎运行]

版权声明:本文原创发表于博客园,作者为路过秋天,原文链接:

http://www.cnblogs.com/cyq1162/archive/2010/10/08/1845708.html

时间: 2024-12-11 02:47:09

CYQ.Data 轻量数据层之路 应用示例三 Aop切入留言系统--操作日志(二十七)的相关文章

CYQ.Data 轻量数据层之路 应用示例二 在线聊天(六)

继上一篇:CYQ.Data 轻量数据层之路 华丽升级 V1.3出世(五),本篇趁周末而且是下班时间看贴人不多,低调让其出手应用一下: 同样为了能一篇介绍完一个示例,我精简挑选了一下,本次的示例为:注册+登陆+在线聊天[省去了私聊部分] 在看此文示例之前,请先看:CYQ.Data 轻量数据层之路 应用示例篇(四) --因为注册+登陆从那直接Copy的,这节就省过了.   当前环境同样是:VS2005+SQL2005,以下进入正题: 一:数据库 起名:Chat 两个表:Users+Message,上

CYQ.Data 轻量数据层之路 应用示例一 留言版(四)

继上篇:CYQ.Data 轻量数据层之路 继续狂热升级(三)之后,本篇要进入应用示例介绍使用了:   为了使一篇文章就能介绍完整个示例,我选用了简单的:登陆+注册+留言版本功能,来一步一步介绍如何使用的: 当前环境是:VS2005+SQL2005   从数据库说起吧,我们创建一个新的数据库,起名叫:Message 接着新建两个表:Users+Message,上图: 为避免本篇节过长,本示例只选用最关键的字段了,大伙可以根据上面的图自己创建数据库与表. 接着我们新建网站来示例[这里没选择新建应用程

CYQ.Data 轻量数据层之路 使用篇三曲 MAction 取值赋值(十四)

上一篇:CYQ.Data 轻量数据层之路 使用篇二曲 MAction 数据查询(十三)   内容概要 本篇继续上一篇内容,本节介绍所有取值与赋值的相关操作.1:原生:像操作Row一样 2:扩展:对UI操作 GetFrom与SetTo 3:扩展:非UI操作 Get与Set   代码共同部分提前说明,我们假设以通过以下方法查询完一行数据 MAction action = new MAction(TableNames.Users);if (action.Fill("UserName='路过秋天'&qu

CYQ.Data 轻量数据层之路 常见问题QA(三十)

说明: 这里写一下 CYQ.Data 框架 在使用过程,大伙容易由于某种原因使用不当而产生的问题解答.     一:支持说明   1:支持事务 A:V1.4版本及以上支持事务,默认new MAction时即开启事务,直到调用Close/Disponse/EndTranstion时提交并关闭事务.   2:支持Winform A:V1.5版本及以上支持Winform,包括直接绑定和UI操作.   3:支持多数据库版本 A:V1.3.V1.4.V1.5版本仅支持SQL2005. B:V1.5.5版本

CYQ.Data 轻量数据层之路 华丽V1.3版本 框架开源

本篇对框架开源进行说明:   提前说明: 1:最近有很多友人没有留言就加群了,导致被拒绝,这此说声抱歉啦.    不过规则还是要遵守的,毕竟人数有限.    如果只是想着可有可无的看,下面有一份反编绎源码,基本也不影响高手查看了. 2:另外也有个别留了言没加群的,也只能说声音抱歉了,源码不会发到指定的邮箱.    源码会发送到指定邮箱的情况:仅限于公司名义,同时站内信有消息,才会特别去发邮件的.       本次开源针对最新版本V1.3版本,相关更新见:CYQ.Data 轻量数据层之路 华丽升级

CYQ.Data 轻量数据层之路 使用篇一曲 裸身走天涯(十二)

其实本来是不想写使用帮助的,因为在以下的文章中,都有大量的示例存在:   CYQ.Data 轻量数据层之路 应用示例一 留言版(四) CYQ.Data 轻量数据层之路 华丽升级 V1.3出世(五) CYQ.Data 轻量数据层之路 应用示例二 在线聊天(六) CYQ.Data 轻量数据层之路 优雅V1.4 现世 附API帮助文档(九)   不过很多人还是很懒啊,一进群就用问怎么用. 发个文章路径让其看吧,又说太麻烦,使用复杂,于是想了想,还是写写使用教程,让这部分懒人速成一下.   当前最新版本

CYQ.Data 轻量数据层之路 SQLHelper 回头太难(八)

提前说明:正如网友反映的一样,为了不至于产生明显的误导,特别加了此首段说明 SQLHelper,几乎是每个过来者必经的阶段,写好一个SQLHelper是非常重要的一环,所以希望年轻的来者,要多加实践,别只看不动手,哪怕照着写一写,也是相当的有益. 对于本框架系列,希望年轻来者在掌握使用的同时,动手照着系列文章写一写,如果照着写出来的,相信成长不是一点半点的:别光看不练,最后只能忽悠却动不了手.       这篇文章很不好写,我在电脑前思索了一天,也不知怎么下手. 关于SQLHelper的文章遍地

CYQ.Data 轻量数据层之路 华丽升级 V1.3出世(五)

继上一篇:CYQ.Data 轻量数据层之路 应用示例篇(四) 之后,有兴趣的读者可以放心使用及应用或练习了!   不过,在稳定版本之后,本人又进行了一次华丽的升级,升级记录如下: 1:MAction:增加ResetTable功能 2:MAction:增加在Update/Insert/Fill/ResetTable失败时,自动调用Close() 3:MAction:修改Fill方法:将之前如果填充时有多条记录返回失败,改成返回首条记录 4:MAction:增加SetAutoPrefix方法,可传多

CYQ.Data 轻量数据层之路 使用篇四曲 MAction 增删改(十五)

上一篇:CYQ.Data 轻量数据层之路 使用篇三曲 MAction 取值赋值(十四)   本篇内容概要 本篇继续上一篇内容,本节介绍所有增删改的相关操作. 1:添加数据 Insert方法2:删除数据 Delete方法3:更新数据 Update方法 作者博客地址:http://cyq1162.cnblogs.com/     一:添加操作 方法原型:public bool Insert()public bool Insert(bool AutoSetValue)   示例1: MAction a