手把手教你写ORM(五)

CMMI是魔鬼

继续上面的内容,这里我们要实现一个插件的结构来动态从外部载入数据组件,其好处不用我再多说了,可能有人会发问,插件是AOP的拿手好戏你咋个不用?真是晕死,就2行代码,犯得着引入那么大一堆东西进来么?

插件,首先要定义接口,当然通过Refrection我们无所不能,但是有一个定义好的Interface对性能的改善来说不是一点半点的。
我们引入一个新的项目来定义接口,理由呢就是消除循环引用。
接口的定义:
 1namespace Alexander.Xbase.Interface
 2{
 3    public interface IQueriable
 4    {
 5        void Init(string connstr,string configbase);
 6        void OpenTranscation();
 7        void Commit();
 8        void RollBack();
 9        object Query4Object(string action,object target);
10        void Query4List(string action,ref IList target,object queryparam);
11        int Query4Page(string action,ref IList target, object queryparam, int pageid, int pagesize, string sort, string direct);
12        int Query4Update(string action, object target);
13        object Query4Count(string action, object target);
14        void Close();
15    }

16}

这里你也可以按照自己的想法来定义,比如需要更细粒度的操作方法等等,反正我是觉得这几个够用了,连事务都有了,夫复何求阿......

后头的事情就很简单了
我们在主项目里添加一个Factory的类用来获取插件的实例:
 1namespace Alexander.Xbase
 2{
 3    public class QueryLoader
 4    {
 5        public static IQueriable LoadQuerySession(string SessionName)
 6        {
 7            Sessions Session = new Sessions();
 8            SessionParameter sp = Session.GetSessionByName(SessionName);
 9            string path = sp.Assambly + ".dll";
10            Assembly ass = Assembly.LoadFrom(path);
11            IQueriable query = (IQueriable)ass.CreateInstance(sp.Provider);// (sp.Provider);
12            query.Init(sp.Connectionstring,sp.Configbase);
13            return query;
14        }

15    }

16}


有这么简单么?事情就是这么简单,关键就这两行
 Assembly ass = Assembly.LoadFrom(path);
 IQueriable query = (IQueriable)ass.CreateInstance(sp.Provider);

好了,现在你可以通过修改前一篇提到的数据库配置文件来更换使用的数据库操作组件了。

下一篇我们来看如何对类来做映射。

to be continue.....

posted on 2007-01-24 15:29 亚历山大同志 阅读(2796) 评论(6) 编辑 收藏

评论

#1楼 2007-01-24 17:54 老流      

期待下文^_^!  回复 引用 查看   

#2楼 2007-01-24 18:04 Cure      

Refrection or Reflection ?  回复 引用 查看   

#3楼[楼主] 2007-01-24 19:18 亚历山大同志      

@Cure
呵呵,笔误
 回复 引用 查看   

#4楼 2007-01-24 22:18 kerry[未注册用户]

期待下一篇文章..  回复 引用   

导航

公告


放一首适合飚车的音乐,听这个开车会不知不觉的加速
昵称:亚历山大同志
园龄:5年
荣誉:推荐博客
粉丝:116
关注:0
<2012年2月>
2930311234
567891011
12131415161718
19202122232425
26272829123
45678910

统计

搜索

 
 

常用链接

最新随笔

我的标签

随笔分类(128)

随笔档案(134)

相册

朋友的Blog

同事的Blog

积分与排名

最新评论

阅读排行榜

评论排行榜

推荐排行榜