ORM和easyOrm

来源:互联网 发布:javascript 关键字 编辑:程序博客网 时间:2024/06/07 07:26
在dotnet中有很多ORM,但真正可运用到项目中的没几个。相对比较知名的ORM:NHiberate、Ibatisnet、Nbear、Castle的ORM等等,NHiberate:java中最著名的ORM,但dotnet中就不怎么样了,曾经有个项目使用过,感觉很难用而且性能低下(那个项目后再也没去关注它了);Ibatisnet:只能算半ORM,通用sql映射来完成,非常灵活,性能也不错,易学易用;但有个缺点就是没有一个比较好配置工具,开发效率不是很高(需要手工配置,还要写实现接口,也没有默认一种实现);这两年项目一直使用这个。
NBear:国人开发的,听说还不错,但没用过。
ActiveRecord:是基于NHIBERNATE的ORM,使用挺便捷的但性能也不行。
总结,这么多开源的ORM中我认为还是Ibatisnet最可靠、安全,可以在项目中放心使用;
用Ibatisnet总觉不够ORM,不够自动化;前年我写一个轻量级ORM用反射,性能太差,映射信息配置在实体属性上,不是很好用。所以推倒重新设计了一个,目标是:使用简洁、性能高、灵活易用和实用等,该ORM命名为EasyOrm;使用emit生成数据库与实体动作所以性能很高,跟手写的代码一样高的运行效率;使用xml配置映射关系和操作SQL(简单的操作可使用默认操作,可手写SQL跟IBATISNET一样的sqlmap);支持一对一和一对多关系。
操作方式1:
  1. public class User
  2. {
  3.    private string m_name = string.Empty;
  4.    private int m_age = 0;
  5.    private string m_id = string.Empty;
  6.    public string Name
  7.    {
  8.       get{return m_name;}
  9.       set{m_name = value;}
  10.    }
  11.    public string ID
  12.    {
  13.       get{return m_id;}
  14.       set{m_id= value;}
  15.    }
  16.    public int Age
  17.    {
  18.       get{return m_age;}
  19.       set{m_age = value;}
  20.    }
  21. }
映射关系配置,略,待补。。。。。
User u = new User();
u.ID = "1";
u.Name = "df";
u.Age = 18;
ObjectManager.Insert(u);//插入数据
u.Age= 20;
ObjectManager.Update(u);//更新数据
ObjectManager.Delete(u);//删除数据
List<User> users = ObjectManager.Select<User>("Age=18");//查询,获取年龄为18的数据

操作方式2:(sqlmap,类似IBATISNET功能)
先在配置文件里写要操作的SQL;sql:insert into [user] (id,name,age)value(#ID#,#Name#,#Age#)   参数为User类
然后在代码里调用该sql编号及参数,如下:
ObjectManager.SqlMap(sqlID,user);

这两种方式互补,方式1方便、方式2灵活。
easyORM目前基本完成,过段时间把源码放上来。