源码下载及学习文档地址:https://www.itdos.com/Dos/ORM/Index.html
一、介绍
Dos.ORM(原名Hxj.Data)于2009年发布,2015年正式开源,该组件已在数百个成熟项目中应用,是目前国内用户量最大、最活跃、最完善的国产ORM。初期开发过程中参考了NBear与MySoft,吸取了他们的一些精华,加入新思想,后期参考EF的Lambda语法进行大量扩展。
为什么使用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框架,必须支持
二、使用方法
1、使用Dos.Tool-master编译生成实体生成工具,生成实体类;
//------------------------------------------------------------------------------
// <auto-generated>
// 此代码由工具生成。
// 运行时版本:4.0.30319.42000
// Website: http://ITdos.com/Dos/ORM/Index.html
// 对此文件的更改可能会导致不正确的行为,并且如果
// 重新生成代码,这些更改将会丢失。
// </auto-generated>
//------------------------------------------------------------------------------
using System;
using Dos.ORM;
namespace Dos.Model
{
/// <summary>
/// 实体类cms_city。(属性说明自动提取数据库字段的描述信息)
/// </summary>
[Table("cms_city")]
[Serializable]
public partial class cms_city : Entity
{
#region Model
private int _cityid;
private int _provinceid;
private string _cityname;
private string _dialcode;
/// <summary>
///
/// </summary>
[Field("cityid")]
public int cityid
{
get{ return _cityid; }
set
{
this.OnPropertyValueChange("cityid");
this._cityid = value;
}
}
/// <summary>
///
/// </summary>
[Field("provinceid")]
public int provinceid
{
get{ return _provinceid; }
set
{
this.OnPropertyValueChange("provinceid");
this._provinceid = value;
}
}
/// <summary>
///
/// </summary>
[Field("cityname")]
public string cityname
{
get{ return _cityname; }
set
{
this.OnPropertyValueChange("cityname");
this._cityname = value;
}
}
/// <summary>
///
/// </summary>
[Field("dialcode")]
public string dialcode
{
get{ return _dialcode; }
set
{
this.OnPropertyValueChange("dialcode");
this._dialcode = value;
}
}
#endregion
#region Method
/// <summary>
/// 获取实体中的主键列
/// </summary>
public override Field[] GetPrimaryKeyFields()
{
return new Field[] {
_.cityid,
};
}
/// <summary>
/// 获取列信息
/// </summary>
public override Field[] GetFields()
{
return new Field[] {
_.cityid,
_.provinceid,
_.cityname,
_.dialcode,
};
}
/// <summary>
/// 获取值信息
/// </summary>
public override object[] GetValues()
{
return new object[] {
this._cityid,
this._provinceid,
this._cityname,
this._dialcode,
};
}
/// <summary>
/// 是否是v1.10.5.6及以上版本实体。
/// </summary>
/// <returns></returns>
public override bool V1_10_5_6_Plus()
{
return true;
}
#endregion
#region _Field
/// <summary>
/// 字段信息
/// </summary>
public class _
{
/// <summary>
/// *
/// </summary>
public readonly static Field All = new Field("*", "cms_city");
/// <summary>
///
/// </summary>
public readonly static Field cityid = new Field("cityid", "cms_city", "");
/// <summary>
///
/// </summary>
public readonly static Field provinceid = new Field("provinceid", "cms_city", "");
/// <summary>
///
/// </summary>
public readonly static Field cityname = new Field("cityname", "cms_city", "");
/// <summary>
///
/// </summary>
public readonly static Field dialcode = new Field("dialcode", "cms_city", "");
}
#endregion
}
}
2、ITdos-Dos.ORM-master项目编译生成Dos.ORM.dll、Dos.ORM.MySql.dll,引入项目
3、使用简单:
var db_orm = new DbSession(DatabaseType.MySql, "Data Source=127.0.0.1;Database=ourcms;User Id=root;Password=root;Convert Zero Datetime=True;Allow Zero Datetime=True;");
var result = db_orm.From<cms_mobile>().Top(10).ToList();
var result2 = db_orm.FromSql("select * from cms_mobile order by id limit 10").ToList<cms_mobile>();
var result3 = db_orm.FromSql("select id from cms_mobile order by id limit 10").ToList<int>();
其他更详细的使用方式查看文档。
三、注意事项
1、Dos.ORM官网:https://www.itdos.com/Dos/ORM/Index.html
可以从官网提供的地址下载“Dos.ORM(原Hxj.Data)数据库组件”和“Dos.Tool代码生成器”
本人从https://github.com/itdos/Dos.ORM下载了Dos.orm,从https://github.com/itdos/Dos.Tool下载了Dos.Tool。
注意,下载的使用时用Dos.ORM.Standard版本,最好重新编译生成最新的Dos.ORM.dll、Dos.ORM.MySql.dll和Dos.Tool.exe,本人用下载的生成好的旧版本,出现了下图中的错误。
经检查试验原因为用新版本Dos.Tool.exe生成的实体类与原版本有差别引起
使用中还可能会用到MySql.Data.dll