Dos.C#.Net使用
Dos.ORM(原Hxj.Data)于2009年发布,并发布实体生成工具。在开发过程参考了多个ORM框架,特别是NBear,MySoft、EF、Dapper等。吸取了他们的一些精华,加入自己的新思想。该组件已在上百个成熟企业项目中应用
为什么选择Dos.ORM(原Hxj.Data)?
- 上手简单,0学习成本。使用方便,按照sql书写习惯编写C#.NET代码。功能强大
- 高性能(与Dapper媲美,接近手写Sql)
- 体积小(不到150kb,仅一个dll)
- 完美支持Sql Server(2000至最新版),MySql,Oracle,Access,Sqlite等数据库
- 支持大量Lambda表达式写法,国产ORM支持度最高,开源中国ORM排行前三
- 不需要像NHibernate的XML配置,不需要像EF的各种数据库连接驱动
- 众多成熟企业软件、互联网项目已应用此框架
- 遵循MIT开源协议,除不允许改名,其它随意定制修改
- Dos团队持续更新升级,任何Bug反馈都会立即得到解决
首先·在 App.config文件中配置连接数据库字符串。或者在程序中指定
1 <connectionStrings> 2 <add name="School" connectionString="Data Source=.;Initial Catalog=School;User ID=sa;Pwd=123;"></add> 3 </connectionStrings>
然后,进行增删改操作。如下:
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 using Hxj.Data; 7 using Hxj.Data.Sqlite; 8 using System.Data; 9 10 namespace cn.School 11 { 12 class Test 13 { 14 static void Main(string[] args) 15 { 16 17 // <connectionStrings> 18 //<add name="School" connectionString="Data Source=.;Initial Catalog=School;User ID=sa;Pwd=123;"></add> 19 //</connectionStrings> 20 21 //不同的数据库可构造不同的DbSession DbSession(connectionStrings节点的name) 22 //DbSession dbs = new DbSession("School"); 23 DbSession dbs2 = new DbSession(DatabaseType.SqlServer, "Data Source=.;Initial Catalog=School;User ID=sa;Pwd=123;"); 24 25 //TestSelDB(); 26 27 //addTestDB(); 28 29 //Updata(); 30 31 //DelData(); 32 33 //sqlFrom(); 34 35 assistmethod(); 36 } 37 38 /// <summary> 39 /// 查询操作 40 /// </summary> 41 public static void TestSelDB() 42 { 43 //查询Student表中第一条数据并返回实体,代码如下。 44 Student st = DbSession.Default.From<Student>() 45 //.Select(Products._.ProductID) //查询返回ProductID字段 46 //.GroupBy(Products._.CategoryID.GroupBy && Products._.ProductName.GroupBy)//按照CategoryID,ProductName分组 47 //.InnerJoin<Suppliers>(Suppliers._.SupplierID == Products._.SupplierID)//关联Suppliers表 --CrossJoin FullJoin LeftJoin RightJoin 同理 48 //.OrderBy(Products._.ProductID.Asc)//按照ProductID正序排序 49 //.Where((Products._.ProductName.Contain("apple") && Products._.UnitPrice > 1) || Products._.CategoryID == 2)//设置条件ProductName包含”apple”并且UnitPrice>1 或者CategoryID =2 50 //.UnionAll(DbSession.Default.From<Products>().Select(Products._.ProductID))//union all查询 51 //.Distinct() // Distinct 52 //.Top(5) //读取前5条 53 //.Page(10, 2)//分页返回结果 每页10条返回第2页数据 54 //.ToDataSet(); //返回DataSet 55 //.ToDataReader(); //返回IDataReader 56 //.ToDataTable(); //返回DataTable 57 //.ToScalar(); //返回单个值 58 .ToFirst(); 59 60 //分字段查询 61 DbSession.Default.From<Student>() 62 .Select(Student._.Stu_ID, Student._.Stu_name) 63 .ToDataTable(); 64 65 //分字段查询取别名 66 DbSession.Default.From<Student>() 67 .Select(Student._.Stu_ID, Student._.Stu_name.As("pname")) 68 .ToDataTable(); 69 70 //排序倒叙排列 71 DataTable dt = DbSession.Default.From<Student>().OrderBy(Student._.Stu_ID.Desc).ToDataTable(); 72 73 } 74 75 /// <summary> 76 /// 模糊查询 77 /// 子查询 78 /// in 查询 79 /// not iN查询 80 /// </summary> 81 public static void demoSelet() 82 { 83 84 //Contain完全模糊查询 85 DbSession.Default.From<Student>().Where(Student._.Stu_ID.Contain(41500)); 86 87 //查找Stu_ID列中所有以41500开头的。 88 DbSession.Default.From<Student>().Where(Student._.Stu_ID.BeginWith(41500)); 89 90 //查找Stu_ID列中所有以41500结尾的。 91 DbSession.Default.From<Student>().Where(Student._.Stu_ID.EndWith(41500)); 92 93 //in 查询 94 DbSession.Default.From<Student>() 95 .Where(Student._.Stu_ID.SelectIn(1, 2, 3)) 96 .ToList(); 97 98 //not in查询 99 DbSession.Default.From<Student>() 100 .Where(Student._.Stu_ID.SelectNotIn<int>(1, 2, 3)) 101 .ToList(); 102 103 //子查询 104 105 //SubQueryEqual = 106 //SubQueryNotEqual <> 107 //SubQueryLess < 108 //SubQueryLessOrEqual <= 109 //SubQueryGreater > 110 //SubQueryGreaterOrEqual >= 111 //SubQueryIn in 112