ORM系列之一:Dos.ORM
阅读目录
引言
1.为什么使用Dos.ORM
2.配置
3.开始使用
3.1. 物理表
3.2. 实体类
3.3. 使用方法
引言
Dos.ORM(原名Hxj.Data)于2009年发布,2015年正式开源,该组件已在数百个成熟项目中应用,是目前国内用户量最大、最活跃、最完善的国产ORM。初期开发过程中参考了NBear与MySoft,吸取了他们的一些精华,加入新思想,后期参考EF的Lambda语法进行大量扩展。
1.为什么使用Dos.ORM
选择Dos.ORM的理由:
1.上手非常简单,0学习成本。使用方便,按照sql书写习惯编写C#代码。功能强大。
2.轻量级,只有一个dll文件(不到200KB),相比于EF,NHibernate这些重量级的ORM框架,实在是太小。
3.支持各种不同主流数据库,例如:SQL Server,MySql,Oracle,Sqlite,Access等等。
4.高性能,接近手写sql
5.支持Lambda表达式写法
6.国产的优秀ORM框架,必须支持
2.配置
Dos.ORM的配置非常简单,只需要简单的一句代码即可,不过配置文件中必须存在对应的节点,不然运行时会报错。
配置代码如下:

配置文件信息如下:

就是这么简单,一句话搞定。
3.使用Dos.ORM
3.1. 物理表
正式使用Dos.ORM框架之前,我们要先创建对应的表,该实例中只创建一个简单的学生表,代码脚本如下:
CREATE TABLE [dbo].[T_Student](
[Id] [uniqueidentifier] NOT NULL,
[Name] [varchar](50) NULL,
[IDNumber] [varchar](50) NULL,
[MobilePhone] [varchar](50) NULL,
[ClassId] [uniqueidentifier] NULL,
[CreateTime] [datetime] NOT NULL,
CONSTRAINT [PK_TableSqlServer] PRIMARY KEY CLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
3.2. 实体类
创建好表之后,接着我们就要创建对应的实体类,当然这个可以通过工具去自动生成,此处我们还是手动去创建,切记,实体类必须派生自Entity.cs,而且必须增加Table特性指定对应的物理表,具体实体如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Dos.ORM; namespace QYH.DosORM.Test.Model
{
[Table("T_Student")]
[Serializable]
public class Student:Entity
{
public Guid Id { get; set; } public string Name { get; set; } public string IDNumber { get; set; } public string MobilePhone { get; set; } public Guid? ClassId { get; set; } public DateTime CreateTime { get; set; }
}
}
3.3使用方法
一切准备就绪,现在就可以使用Dos.ORM了,一个非常简单的查询实例,具体实现代码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Dos.ORM;
using QYH.DosORM.Test.Model; namespace QYH.DosORM.Test
{
class Program
{
static void Main(string[] args)
{
var list = DB.Context.FromSql("SELECT TOP 5 * FROM T_Student")
.ToList<Student>(); foreach (var item in list)
{
Console.WriteLine(item.Name+" "+item.IDNumber);
} Console.Read();
}
}
}
成功查询出5条数据,结果如下:


Dos.ORM虽然是个轻量级的ORM框架,但是功能还是比较强大的,不仅支持普通的查询,还支持关联查询、分页、排序、分组等等。
具体的可以参考官网:http://www.itdos.com/Dos/ORM/Index.html
ORM系列之一:Dos.ORM的更多相关文章
- CYQ.Data 从入门到放弃ORM系列:开篇:自动化框架编程思维
前言: 随着CYQ.Data 开始回归免费使用之后,发现用户的情绪越来越激动,为了保持这持续的激动性,让我有了开源的念头. 同时,由于框架经过这5-6年来的不断演进,以前发的早期教程已经太落后了,包括 ...
- dos.orm学习地址
os.ORM(原Hxj.Data)于2009年发布.2015年正式开源,该组件已在数百个成熟项目中应用,是目前国内.Net用户量最多.最活跃.最完善的国产ORM.初期开发过程参考了NBear与MySo ...
- Dos.ORM Select查询 自定义列
自定义列 .Select( p = >new{ test = p.id}) // 同sql 列名 as 新列名 如下是 自己在写代码的例子,查询,分页,where条件,排序 var where ...
- ORM系列之Entity FrameWork详解
一. 谈情怀 从第一次接触开发到现在(2018年),大约有六年时间了,最初阶段连接数据库,使用的是[SQL语句+ADO.NET],那时候,什么存储过程.什么事务 统统不理解,生硬的将SQL语句传入SQ ...
- dos.orm的事务处理
dos.orm也包含事务处理,没有太多封装,这里有几个简单的示例代码. using (DbTrans trans = DbSession.Default.BeginTransaction()) { D ...
- dos.orm
引言: Dos.ORM(原Hxj.Data)于2009年发布.2015年正式开源,该组件已在数百个成熟项目中应用,是目前国内用户量最大.最活跃.最完善的国产ORM.初期开发过程中参考了NBear与My ...
- Dos.ORM - 目录、介绍
引言: Dos.ORM(原Hxj.Data)于2009年发布.2015年正式开源,该组件已在数百个成熟项目中应用,是目前国内用户量最大.最活跃.最完善的国产ORM.初期开发过程中参考了NBear与My ...
- Dos.ORM logo.Net轻量级开源ORM框架 Dos.ORM
http://www.oschina.net/p/dos-orm http://www.oschina.net/project/lang/194/csharp http://www.cnblogs.c ...
- dos.ORM配置和使用
处理oralce,sqlserver,access及其他常用数据库,下载和学习地址 1.web.config配置数据库连接字符串,以及数据库类型: <connectionStrings>& ...
随机推荐
- Azkaban 2.5.0 搭建
一.前言 最近试着参照官方文档搭建 Azkaban,发现文档很多地方有坑,所以在此记录一下. 二.环境及软件 安装环境: 系统环境: ubuntu-12.04.2-server-amd64 安装目录: ...
- linux建立ssh信任关系
一.建立SSH信任将A主机做为客户端(发起SSH请求 ip:192.168.200.170)将B主机作为服务器端(接收ssh请求 ip:192.168.200.149)以上以主动发起SSH登录请求 ...
- BZOJ4538 : [Hnoi2016]网络
求出这棵树的dfs序,对于一条链$u-v$,假设$st[u]\leq st[v]$,那么一条链不经过点$x$当且仅当它满足下面任意一个条件: 1.$st[v]<st[x]$ 2.$st[u]&g ...
- [NOIP2015]运输计划 D2 T3 LCA+二分答案+差分数组
[NOIP2015]运输计划 D2 T3 Description 公元2044年,人类进入了宇宙纪元. L国有n个星球,还有n-1条双向航道,每条航道建立在两个星球之间,这n-1条航道连通了L国的所有 ...
- BZOJ 1831 & 就是一个DP....
题意: 比如说,4 2 1 3 3里面包含了5个逆序对:(4, 2), (4, 1), (4, 3), (4, 3), (2, 1). 可惜的是,由于年代久远,这些数字里有一部分已经模糊不清了,为了方 ...
- Android LocalBroadcastManager 与 BroadcastReceiver
Android中BroadcastReceiver主要用途有 发送通知,更新UI或者数据,应用程序间相互通信,监听系统状态(比如开机,网络等) Android中发送广播的方式: 普通广播:无论优先级大 ...
- 【BZOJ】1110: [POI2007]砝码Odw
题意 给定\(n\)个砝码和\(m(1 \le n, m \le 100000)\)个背包\((1 \le n_i, m_i \le 1000000000)\),保证对于任意两个砝码都有一个是另一个的 ...
- HDU 4758 Walk Through Squares(AC自动机+DP)
题目链接 难得出一个AC自动机,我还没做到这个题呢...这题思路不难想,小小的状压出一维来,不过,D和R,让我wa死了,AC自动机,还得刷啊... #include<iostream> # ...
- Linux的磁盘分区(1)
分区命名: 1.Linux下的分区命名不同于windows下的命名,对硬盘如IDE硬盘采用类似/dev/hdxy的方式来命名,其中hd表示分区所在的设备类型,如IDE硬盘,x表示硬盘盘号(a为基本主盘 ...
- 选择Nodejs的N个理由
选择Nodejs的N个理由 作者 马德奎 发布于 2014年9月25日 Caleb Madrigal是 来自美国密尔沃基市的一名软件顾问.四年前,他在听说“将JavaScript用作服务器端语言”这样 ...