zoukankan      html  css  js  c++  java
  • 自定义ORM系列(三)工具雏形及基本用法 Virus

    引言

      本篇给大家介绍我这个工具的雏形结构,以及基本的用法,还请大家多提意见。

      初看起来,这个有点像NHibernate。说到这里,肯定有人要拍砖了。其实,我也知道。我这个不入流的东西,和NHibernate相比差远了。我开发这个东西的原因主要有两个:

      1)NHibernate太复杂了,学习了两个星期,觉得它太强大了。但是强大是用复杂做代价的,里面要学习的东西太多了,不敢轻易引入项目,因为很多原理不清楚,报错也不明确,所以不敢轻易在项目中使用。

      2)自己想练练手,顺便通过这个过程,也好深入继续深入学习一下NHibernate。因为在写这个工具的过程中,我会看NHibernate的源码,然后看他的源码调用关系,调用逻辑,在自己的工具中模仿它,通过模仿来学习提高。

    正文

      开始正文吧。写上一幅我目前的工具类图。

      

      基本的调用关系,有点像NHibernate。

      给大家先贴一段使用的示例代码。

    Custom ORM Code Demo
     //初始化Session
                ISession session = new Configuration().Configure().BuildSessionFactory().OpenSession();
                Order order 
    = new Order();
                Guid id 
    = order.OrderID = Guid.NewGuid();
                order.ProductName 
    = "seed1221002" + DateTime.Now.ToLongTimeString();
                
    //添加
                session.Save(order);
                session.SubmitChange();
                
    //获取
                order = new Order();
                order 
    = session.Get(new Guid("6744C2AB-C780-4DAD-9089-DF166747640F"));
                
    //事务操作
                using (ITransaction tran = session.BeginTransaction())
                {
                    
    try
                    {
                        session.Save(order);
                        order.ProductName 
    = "seed1221003" + DateTime.Now.ToLongTimeString();
                        session.Update(order);
                        tran.Commit();
                    }
                    
    catch (Exception ex)
                    {
                        tran.Rollback();
                    }
                }

      内部具体的数据库操作,目前使用的是Enterprise Library V5.0,感觉使用企业库比较方便。后面的话,如果发现不合适,可以直接用原生的ADO.NET代替就可以了。

      代码:/Files/virusswb/BTFramework.rar

      结合我的 自定义ORM系列(一)利用attribute实现简单的reader=>entity和reader=>List<entity>映射 自定义ORM系列(二)发现属性是否修改,有选择的持久化 以及 胡乱说一下我对于 BO VO PO DTO 的理解 中的思想,就可以实现一个完整的基于attribute的ORM小工具,以及有选择的持久化。还可能会极大的减轻系统的维护量。在后面我会将完整版的工具上传,我还会继续完善其他的功能,以及进行一些测试。

    后话

      如果有哪位有心人,愿意看在下的代码,不嫌弃在下代码乱的话,可以帮我理理思路。因为,我觉得目前的代码结构不是很好,我不知道我这个在实际中使用的话,会遇到什么问题,在哪些地方还需要提高,还需要注意什么,或者说代码的结构那里需要调整?希望有缘人可以指点一二,当然了,胡乱说几句也可以,先谢过了。

      当然了,这个ORM工具我也会继续的完善,希望在下一个项目中可以实践一下。

      项目的SVN地址:svn://www.oksvn.com/BTFramework

      大家可以随意获取,随意使用,随意批评。

  • 相关阅读:
    将Moba的输出导出为文件
    MyBatis入参为0时失效问题
    (笔记)交大电院MEM提前面试优秀经验分享【附面试流程及规则】
    (笔记)GPIO基本原理与寄存器配置(STM32篇)
    (笔记)高速电路板完美走线的诀窍
    使用 python 收集 kubernetes events 并写入 elasticsearch
    java使用io.kubernetes.client-java调用k8s api创建pod/service/ingress示例
    中英文逗号空格分隔符正则式
    SpringCloud学习一-搭建netflix-eureka微服务集群
    Spring 中经典的 9 种设计模式,打死也要记住啊!
  • 原文地址:https://www.cnblogs.com/virusswb/p/1913057.html
Copyright © 2011-2022 走看看