DBScript:轻量级ORM

DBScript是一个轻量级的ORM,支持数据库的以下操作:1.基本的增删改查 2. 数据库事务 3.数据库的读写分离。暂时支持的数据库有:MsSQL2005,MySQL,SQLite.

配置文件:

代码

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <section name="DBScript" type="DBScript.DBScriptSectionHandler,DBScript" />
  </configSections>
  
  <DBScript>
    <setting IsDebug="false" DebugFilePath="/Log/" />
    <add name="Test_MsSQL" connectionString="Database=DBTest;Server=WORKGROU-AXFN59\XUZHIBIN;Integrated Security=false;user id=sa;Password=sa;" dbType="MsSQL" />
    <add name="Test_MsSQL2k" connectionString="Database=DBTest;Server=WORKGROU-AXFN59\XUZHIBIN;Integrated Security=false;user id=sa;Password=sa;" dbType="MsSQL2k" />
    <add name="Test_MySQL" connectionString="Data Source=127.0.0.1;User ID=root;Password=123456;DataBase=DBTest;Charset=utf8;" dbType="MySQL" />
    <add name="Test_SQLite" connectionString="Data Source=H:\temp\DBTest.s3db" dbType="SQLite" />
  </DBScript>
</configuration>

测试代码:

代码

using System;
using System.Collections;
using System.Collections.Generic;
using NUnit.Framework;
using DBScript;
using UnitTest.Model;

namespace UnitTest.DBScriptTest
{
    /// <summary>
    /// 基本操作测试
    /// </summary>
    [TestFixture]
    public class MsSqlTest
    {
        /// <summary>
        /// Add
        /// </summary>
        [Test]
        public void AddTest()
        {
            IDBBase dal = DBFactory.GetDbProvider("Test_MsSQL");
            Random rd=new Random();
            UserTest us = new UserTest();
            us.Name = "TUser"+rd.Next(1, 999);
            us.Password = "123456";
            us.Email = string.Format("{0}@test.com",us.Name);
            us.Information = "测试用户";
            us.CreateTime = DateTime.Now;
            us.UpdateTime = DateTime.Now;
            us.IsSuper = true;
            us.State = 1;

Assert.IsTrue(dal.Add<UserTest>(us)>0);
        }
        /// <summary>
        /// Delete
        /// </summary>
        [Test]
        public void DeleteTest()
        {
            IDBBase dal = DBFactory.GetDbProvider("Test_MsSQL");
            dal.Delete<UserTest>(1);
        }
        /// <summary>
        /// Update
        /// </summary>
        [Test]
        public void UpdateTest()
        {
            IDBBase dal = DBFactory.GetDbProvider("Test_MsSQL");
            UserTest us = dal.GetModel<UserTest>(10);
            us.Information = "已修改";
            dal.Update<UserTest>(us);
        }
        /// <summary>
        /// GetList
        /// </summary>
        [Test]
        public void GetListTest1()
        {
            IDBBase dal = DBFactory.GetDbProvider("Test_MsSQL");
            List<UserTest> users = dal.Page(1, 5).GetList<UserTest>();
            foreach(UserTest us in users)
            {
                Console.WriteLine(us.Name);
            }
        }
        /// <summary>
        /// GetList
        /// </summary>
        [Test]
        public void GetListTest2()
        {
            IDBBase dal = DBFactory.GetDbProvider("Test_MsSQL");
            List<UserTest> users = dal.Page(2, 5).OrderBy("Name desc").GetList<UserTest>();
            foreach (UserTest us in users)
            {
                Console.WriteLine(us.Name);
            }
        }
        /// <summary>
        /// GetList
        /// </summary>
        [Test]
        public void GetListTest3()
        {
            IDBBase dal = DBFactory.GetDbProvider("Test_MsSQL");
            List<UserTest> users = dal.Where("name like @name").SetString("name", "%6%").GetList<UserTest>();
            foreach (UserTest us in users)
            {
                Console.WriteLine(us.Name);
            }
        }
        /// <summary>
        /// GetList
        /// </summary>
        [Test]
        public void GetListTest4()
        {
            IDBBase dal = DBFactory.GetDbProvider("Test_MsSQL");
            List<UserTest> users = dal.Select("Name").GroupBy("Name").Having("count(*)>3").OrderBy("Name desc").Page(1, 5).GetList<UserTest>();
            foreach (UserTest us in users)
            {
                Console.WriteLine(us.Name);
            }
        }
        /// <summary>
        /// GetListAndCount
        /// </summary>
        [Test]
        public void GetListAndCountTest()
        {
            
            IDBBase dal = DBFactory.GetDbProvider("Test_MsSQL");
            ArrayList attrs = dal.Where("name like @name").SetString("name", "%1%").Page(1, 5).GetListAndCount<UserTest>();
            List<UserTest> users = attrs[0] as List<UserTest>;
            int count = (int)attrs[1];
            foreach (UserTest us in users)
            {
                Console.WriteLine(us.Name);
            }
            Console.WriteLine(count);

}
        /// <summary>
        /// GetListObjects
        /// </summary>
        [Test]
        public void GetListObjectsTest()
        {

IDBBase dal = DBFactory.GetDbProvider("Test_MsSQL");
            List<object[]> listObjs = dal.From("UserTest","UserId").Select("Name,count(*) as ct").GroupBy("Name").Having("count(*)>1").OrderBy("Name desc").Page(1, 5).GetListObjects();
            foreach (object[] objs in listObjs)
            {
                Console.WriteLine(string.Format("{0}:{1}",objs[0],objs[1]));
            }

}
        /// <summary>
        /// GetCount
        /// </summary>
        [Test]
        public void GetCountTest()
        {
            IDBBase dal = DBFactory.GetDbProvider("Test_MsSQL");
            Console.WriteLine(dal.From<UserTest>().GetCount());
        }
        /// <summary>
        /// Transaction(Yes)
        /// </summary>
        [Test]
        public void TransactionTest1()
        {
            IDBBase dal = DBFactory.GetDbProvider("Test_MsSQL");
            dal.BeginTransaction();
            UserTest us = dal.GetModel<UserTest>(15);
            us.Information = "Transaction";
            dal.Update<UserTest>(us);
            dal.Delete<UserTest>(2);
            dal.Commit();
        }
    }
}

源码及测试代码下载

--------------------------------------

http://www.qwolf.com/

posted on 2010-02-22 20:52 xuzhibin 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/xuzhibin/archive/2010/02/22/1671503.html

DBScript:轻量级ORM相关推荐

  1. Farseer.net轻量级ORM开源框架 V1.x 入门篇:新版本说明

    导航 目   录:Farseer.net轻量级ORM开源框架 目录 上一篇:没有了 下一篇:Farseer.net轻量级ORM开源框架 V1.x 入门篇:数据库配置 前言 V1.x版本终于到来了.本次 ...

  2. java orm 工具_GitHub - donnie4w/jdao: jdao是一个java的轻量级orm工具包

    jdao是轻量级orm工具包,生成与数据表对应的dao类,持久层dao对象操作,同时也支持原生sql语句操作,支持多数据源,对象缓存等. v1.1.6 jdao 初始化: DaoFactory.set ...

  3. .NET轻量级ORM框架Dapper入门精通

    一.课程介绍 本次分享课程包含两个部分<.NET轻量级ORM框架Dapper修炼手册>和<.NET轻量级ORM框架Dapper葵花宝典>,阿笨将带领大家一起领略轻量级ORM框架 ...

  4. Farseer.net轻量级ORM开源框架 V1.x 入门篇:视图的数据操作

    导航 目   录:Farseer.net轻量级ORM开源框架 目录 上一篇:Farseer.net轻量级ORM开源框架 V1.x 入门篇:视图实体类映射 下一篇:Farseer.net轻量级ORM开源 ...

  5. .net的轻量级ORM -- PetaPoco/NPOCO框架使用说明

    .net的轻量级ORM -- PetaPoco/NPOCO框架使用说明 (具体参看:http://www.toptensoftware.com/petapoco/) 从11年就开始尝试使用轻量级ORM ...

  6. c# 轻量级ORM框架 实现(一)

    c# 轻量级ORM框架 实现(一) 2018年09月04日 14:11:02 IT哈 阅读数:1245 发布一个自己写的一个轻量级ORM框架,本框架设计期初基于三层架构.所以从命名上来看,了解三层的朋 ...

  7. Smart ORM v0.3发布(完全面向对象的轻量级ORM工具)

    1. Smart ORM .NET概述 Smart ORM .NET 是基于.NET 2.0的轻量级ORM工具.一般的ORM工具是通过建立数据表格,然后根据表格创建实体类型,而SmartORM则是通过 ...

  8. 重磅开源:基于.NET 6.0 自研轻量级ORM框架

    Fast Framework 项目:https://gitee.com/China-Mr-zhong/Fast.Framework 一.前言 1.为了实现快速开发,省去编写大量Sql时间,更好的面向对 ...

  9. 轻量级ORM《sqlcommon》第一个版本发布了

    一.sqlcommon的特色 1. 轻量级,整个包只有123kb. 2. 性能好,自测... 3. API和功能简单.代码简短.可维护性好基本都能看懂.这个点我认为很重要,你不用为了实现一个需求而四处 ...

最新文章

  1. 博客园2013年4月份第2周源码发布详情
  2. 这款笔记本写代码真爽,包邮送一台!
  3. garch预测 python_【2019年度合辑】手把手教你用Python做股票量化分析
  4. JAVA加密算法(DSA)
  5. 配置 --- vscode中react格式化解决方案
  6. java每个阶段的学习时间_每个Java学习者都会犯的10个最常见的1个错误
  7. oracle命令行原理,Oracle命令行操作方式
  8. Python-OpenCV中的cv2.threshold
  9. 最快的存储过程分页 50W
  10. 【八】有验证码登录配置:通过 Cookie 跳过验证码登录接口
  11. mysql 相关记录
  12. 微pe工具箱有linux版吗,微PE工具箱
  13. 推荐一款优秀的注册表和临时文件等清理软件-CCleaner
  14. 郑职院官计算机网络,2020年陕西省青年职业技能大赛计算机网络管理员决赛开幕式在汉中职院举行...
  15. LeetCode自除数
  16. 寒假线上兼职:300-500元/小时,安利一个大学生也能月入8K的线上兼职!
  17. 锚点是什么?锚点的使用
  18. Cadence Allegro 如何制作表贴焊盘
  19. IT项目管理之第6章 项目成本管理习题选择题汇总
  20. 用python语言绘制美丽图形

热门文章

  1. 剑指Offer系列 重建二叉树
  2. 英语发音规则---N字母
  3. Ionic 存储目录 CORS
  4. openstack学习笔记五 多节点部署之 rabbitmq信息中枢与元数据
  5. 用C#调用Windows API向指定窗口发送按键消息
  6. Python自学起飞——005
  7. VC++ 6.0下OpengGL配置以及glut配置
  8. .cn 域名的解析配置
  9. 《WinForm开发系列之控件篇》Item18 FileSystemWatcher(暂无)
  10. 注意 ExecuteNonQuery() 返回值