四层架构 界面 -> 业务 -> 逻辑 -> 数据---------业务层--------------------------
方法1
{
对象.操作();
}---------逻辑层-------------------------
对象.操作()
{
string sql1 = "操作表1";
string sql2 = "操作表2";
Conn conn = new Conn();//连接对象
conn.执行(sql1 );
conn.执行(sql1 );
对象.某个属性.操作()
}对象.某个属性.操作()
{
string sql3 = "操作表3";
Conn conn = new Conn();//连接对象
conn.执行(sql3);
}
----------------------------
我如果在不改变调用形式的前提下,
业务层如何得到逻辑层共执行了多少SQL,及SQL的参数对象最好也能得到不改变调用形式:不重载,不改返回值,等等,
因为整个程序里到处是这样的调用,如果每个方法都有改动,工作量太大,有点类似于在 业务层.方法1 的大括号间加个监听,反射???
断点调式的时候,可以调式出 对象.操作()的所有语句及数据, 我怎么得到, 能不能得到
方法1
{
对象.操作();
}---------逻辑层-------------------------
对象.操作()
{
string sql1 = "操作表1";
string sql2 = "操作表2";
Conn conn = new Conn();//连接对象
conn.执行(sql1 );
conn.执行(sql1 );
对象.某个属性.操作()
}对象.某个属性.操作()
{
string sql3 = "操作表3";
Conn conn = new Conn();//连接对象
conn.执行(sql3);
}
----------------------------
我如果在不改变调用形式的前提下,
业务层如何得到逻辑层共执行了多少SQL,及SQL的参数对象最好也能得到不改变调用形式:不重载,不改返回值,等等,
因为整个程序里到处是这样的调用,如果每个方法都有改动,工作量太大,有点类似于在 业务层.方法1 的大括号间加个监听,反射???
断点调式的时候,可以调式出 对象.操作()的所有语句及数据, 我怎么得到, 能不能得到
如果想看SQL语句可以在每个执行SQL语句的地方,把SQL文写入到日志文件中就行了。
日志行记录例如:
日期+时间+模块名+方法名+SQL语句
也就是在 对象.操作()时, 把要执行的SQL 放在一边,
等审批通过后再从数据库取出来执行
Conn conn = new Conn();//连接对象
conn.执行(sql1 );
conn.执行(sql1 ); 你都是直接使用最基层的conn达到所要的操作,没有将它封装到DAL中. 如何能改?如果你的conn.执行(sql)是有一个类似的通用方法的话,很简单,在该通用方法底下加一行记录日志的语句就搞定了,像这样:public 执行(sql1)
{
conn.Execute(sql1);
sqlLog = "insert into Log values (sql1)"
conn.Execute(sqlLog);
}
在数据库中设状态的话, 一般只限于审批新建数据, 如果是更新数据或删除数据, 如何廷时操作-----------------------------------------根据你的代码,
Conn conn = new Conn();//连接对象
conn.执行(sql1 );
conn.执行(sql1 ); 你都是直接使用最基层的conn达到所要的操作,没有将它封装到DAL中. 如何能改? 如果你的conn.执行(sql)是有一个类似的通用方法的话,很简单,在该通用方法底下加一行记录日志的语句就搞定了,像这样: public 执行(sql1)
{
conn.Execute(sql1);
sqlLog = "insert into Log values (sql1)"
conn.Execute(sqlLog);
}------------------
您所说的 类似的通用方法 ,是否是指,所有的对象都实现一个 类似于 IConnExecute 的接口,
对象的数据库操作都使用这个接口执行, 那样的话, 我还是得在所有对象的数据库操作方法里作改动...问题是我的项目还应用到一个开源框架,
所有对象都只提供(或只用写) SELECT , UPDATE , INSERT, DELETE 四句SQL
而真正的操作conn.Execute(sql)是由框架完成,
业务层继承框架的某个应用类, UPDATE 时, 只是框架继承对象.DoUpate();还是回到开始的问题
有点类似于在 业务层.方法1 的大括号间加个监听,反射???
断点调式的时候,可以调式出 对象.操作()的所有语句及数据, 我怎么得到, 能不能得到
界面 -> 业务 -> 逻辑 -> 数据 的 四层架构
数据库的操作怎么再封装业务层设定对象操作,交给逻辑层产出SQL语句, 再交给数据层执行, 有什么问题
开源框架.很多东西也是自动生成的吧.看一下框架结构.在框架里面添加Inserting,Updateing,Deleteing事件(这些操作用于你在执行增删改查之前触发),在程序里执行INSERT UPDATE DELETE操作之前Override上面框加里的Inserting,Updateing,Deleteing事件,
调用的时候
//偶合重写的事件
方法1
{
if(事件!=null)//判断事件是否为空
{
//执行事件操作
}
对象.操作();
}
这个比较适合Lz吧
反正要么就在代码中做个用于统计数据的类,在各个方法中调用;要么就是sql中做触发器。不过个人感觉你做个统计数据的类比较好