手把手教你写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 亚历山大同志 阅读(2254) 评论(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[未注册用户]

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




发表评论

昵称: [登录] [注册]

主页:

邮箱:(仅博主可见)

评论内容:

  登录  注册

[使用Ctrl+Enter键快速提交评论]

0 629273




相关文章:

相关链接:

导航

公告

鉴于很多TX投诉黑色背景杀伤眼球,遂换个容易阅读的
PS:背景音乐是电影《斯密斯夫妇》的主题乐 Mondo Bango
!!八强八强!!!!!!!
<2009年7月>
2829301234
567891011
12131415161718
19202122232425
2627282930311
2345678

统计

与我联系

搜索

 

常用链接

留言簿

我参加的小组

我的标签

随笔分类(86)

随笔档案(85)

相册

朋友的Blog

同事的Blog

最新随笔

积分与排名

最新评论

阅读排行榜

评论排行榜