Obj2db 轻量级ORM框架

source:http://www.cnblogs.com/dyj057/archive/2008/11/09/Obj2db.html

Obj2db 轻量级ORM框架(v0.6)

项目主页:http://www.cukesoft.cn/obj2db/ 提供源代码下载和开发文档。

Obj2db是Object to database的简写,它是基于.NET 2.0的开源轻量级ORM工具。它最大的特点是通过类进行数据库操作,数据库对开发者来说是透明的。通过这样的设计使开发者节省大量的处理数据库操作的开发时间,编写更加面向对象的代码,提高了开发的效率。当然它也拥有足够好的性能。

  • 支持包括MS SQL Server、MySQL、SQLite、ACCESS在内的多种数据库,并可扩展。
  • 支持插件编程,可以对未知类型实现数据操作。
  • 开源项目(授权方式GPL V3),方便大家定制和学习。
  • 通过向导来进行程序的数据库配置,免去编写应用程序配置文件的。
  • 简单易用,完全面向对象,提高了开发效率。
  • 支持一对一、一对多的关联。
  • 跨平台特性,可以运行在Windows、Linux、Unix、Mac等多个平台。

设计Obj2db的初衷是为了能够保存插件中的类型,比如定义了接口或基对象,但因为插件是一个动态载入的程序集,里面的具体的实体类型(EntityClass)是未知的。如果要保存该对象,就必须能够为根据实体类型提供创建表格,实现保存,更新,删除,查询等功能。当然,你如果不使用插件机制编程,该ORM框架使用也是很方便的。抛开底层数据库的依赖性,你也可以把它当成一个面向对象的数据库看待。该组件具有很好的扩展性,可以根据你应用的场景去选择不同性能和规模的关系数据库作为基础。大型的项目可以选择Oracel、MS SQL Server、MySQL等;小型的项目推荐使用SQLite,ACCESS文件数据库。

 

最新版本:2008-10-26 版本:0.6.0

该版本改动较大,不再与以前的版本兼容,请注意更新。

  • 项目重命名为为Obj2db,更符合该项目的特点。
  • 添加对基本类型集合和数组的支持。
  • 支持新的类似 Db4o中的SODA的查询表达式。
  • 支持部分字段的查询。
  • 修正发生异常后SQLite的DataReader没有释放而无法释放Connection的Bug。
  • 修正ACCESS中无法创建shortint类型的自增字段的Dug。
  • 添加为数据库文件(针对SQLite,ACCESS)添加相对路径。
  • 为项目添加签名。

 

基本数据库操作风格:

  • 建表

            //如果表格存在,删除表格

            if (ObjDb.IsTableExist<User>())

                ObjDb.DeleteTable<User>();

            //新建表格

            ObjDb.CreateTable<User>();

  • 保存

            User u1 = new User("DYJ", "Deng Yangjun");

            u1.Alias = new string[] { "YJDENG", "DENG" };

            ObjDb.Save(u1);

  • 更新

            //跟新名称为YJDENG,不能跟新主键字段

            u1.Name = "YJDENG";

            ObjDb.Update(u1);

  • 删除

             //删除对象

            ObjDb.Delete(u1);

  • 查询

             //查询Name属性为YJDENG的对象

            Query q = new Query();

            q.Descend("name").Constrain("YJDENG");

            User[] result = ObjDb.Select<User>(q);

            foreach (User u in result)

            {

                Console.WriteLine("查询得到的对象:" + u.ToString());

      }

  • 事务

            //事务,把多个操作当成一个整体对待

            using(ObjDbConnection conn = ObjDbConnFactory.CreateDbConn())

            {

                conn.BeginTrans();

                conn.Save(u1);

                conn.Delete(u1);

                conn.CommitTrans();

            }

 

Tag标签: Obj2db
posted @ 2008-11-09 16:18 天下³ 阅读(340) 评论(2)   编辑 收藏 网摘 所属分类: Midapex ORM Library

   回复   引用   查看     
#1楼  2008-11-09 16:58 | EricWen       
关注一下
   回复   引用   查看     
#2楼  2008-11-09 18:05 | 5207       
如果是多表操作,如关联,多表保存等。能不能举些例子?或者提供文档查看?
<script type=text/javascript> function pageLoad() { Sys.WebForms.PageRequestManager.getInstance().add_initializeRequest(handleInitializeRequest); //Sys.WebForms.PageRequestManager.getInstance().add_endRequest(handleEndRequest); } function handleInitializeRequest(sender, args) { var prm = Sys.WebForms.PageRequestManager.getInstance(); var eid = args.get_postBackElement().id; /*if (eid.indexOf("DeleteLink")>0) { args.get_postBackElement().innerHTML = " 正在删除..."; } else */ if (eid.indexOf("btnSubmit")>0) { document.getElementById("AjaxHolder_PostComment_ltSubmitMsg").innerHTML="正在提交..."; document.getElementById("AjaxHolder_PostComment_btnSubmit").disabled = true; } else if(eid.indexOf("refreshList")>0) { document.getElementById("AjaxHolder_PostComment_refreshList").innerHTML=" 正在刷新..."; } } function TempSave(ElementID) { try { CommentsPersistDiv.setAttribute("CommentContent",document.getElementById(ElementID).value); CommentsPersistDiv.save("CommentXMLStore"); } catch(ex) { } } function Restore(ElementID) { CommentsPersistDiv.load("CommentXMLStore"); document.getElementById(ElementID).value=CommentsPersistDiv.getAttribute("CommentContent"); } </script>

标题
姓名
主页
Email(博主才能看到)
验证码*  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2008-11-09 16:20 编辑过
Google站内搜索

相关文章:
<script language=javascript src="http://zzk.cnblogs.com:8080/RCS?tp=0&tt=Obj2db+%e8%bd%bb%e9%87%8f%e7%ba%a7ORM%e6%a1%86%e6%9e%b6%ef%bc%88v0.6%ef%bc%89&tg=Obj2db&ct=Midapex+ORM+Library+&url=http%3a%2f%2fwww.cnblogs.com%2fdyj057%2farchive%2f2008%2f11%2f09%2fObj2db.html" type=text/javascript charset=utf-8></script> 经典推荐--.NET几大热点问题(.NET人员必读)
ADO.NET 如何读取 Excel (上)
编译调试CSLA .NET Framework v1.5
基于.Net 2.0 (C# 2.0, ASP.NET 2.0)的快速开发框架设计NBear V3.3.9 Stable [开源]
Photoshop CS4 初窥(附图)
一个时代的结束:微软盖茨人生掠影(组图)
读写.db数据文件
.NET连DB2数据库的方法
持久层框架ORM:NHibernate iBATIS.NET
目前正在编写db4o的demo

相关搜索:
Obj2db

相关链接: <script type=text/javascript> var title = document.title; document.write("
"); document.write("
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值