分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 技术分享

DNetORM 一款轻量级的ORM框架

发布时间:2023-09-06 01:29责任编辑:苏小强关键词:暂无标签

使用介绍

1.配置文件配置好连接串

connectionName的值对应连接串的name

 <appSettings> ???<add key="connectionName" value="DB"/> ?</appSettings> ?<connectionStrings> ???<!--<add name="DB" connectionString="Data Source=localhost/XE;User Id=hr;Password=hr;" providerName="Oracle.ManagedDataAccess" />--> ???<!--<add name="DB" connectionString="host=localhost;database=test;uid=root;pwd=sa123456;charset=utf8;" providerName="MySql.Data.MySqlClient" />--> ???<add name="DB" connectionString="Data Source=localhost;Initial Catalog=test;Persist Security Info=True;User ID=sa;Password=123456;" providerName="System.Data.SqlClient" /></connectionStrings>

2.定义好实体

 public class Book ???{ ???????[Key] ???????[DatabaseGenerated(DatabaseGeneratedOption.Identity)] ???????public int? BookID { get; set; } ???????public string BookName { get; set; } ???????public int? AuthorID { get; set; } ???????[NotMapped] ???????public string AuthorName { get; set; } ???????public double? Price { get; set; } ???????public DateTime? PublishDate { get; set; } ???}

增删改查 目前支持sqlserver、mysql、oracle

增加

 ???????????using (DNetContext db = new DNetContext()) ???????????{ ???????????????var authorid = db.Add(new Author { AuthorName = "张三", Age = 30, IsValid = true }); ???????????????db.Add(new Book { BookName = "从入门到放弃", Price = 20.5, PublishDate = DateTime.Now, AuthorID = authorid }); ???????????}

修改

 ???????????using (DNetContext db = new DNetContext()) ???????????{

???????????????int authorid = db.GetMax<Author>(m => (int)m.AuthorID); ???????????????db.Update<Author>(m => m.AuthorName = "恶魔猎手", m => m.AuthorID == authorid); ???????????}

删除

 ???????????using (DNetContext db = new DNetContext()) ???????????{ ???????????????var author = db.GetSingle<Author>(m => true, q => q.OrderBy(m => m.AuthorID)); ???????????????var effect = db.Delete(author); ???????????????int authorid = db.GetMax<Author>(m => (int)m.AuthorID); ???????????????db.Delete<Author>(m => m.AuthorID == authorid); ???????????}

查询

单表查询

支持以下sql格式

like

Contains、StartsWith、EndsWith

in

Contains 集合类

upper lower

ToUpper、ToLower

sql字符大小比较

CompareTo、Equals

charindex instr

IndexOf

is null or = ‘‘

IsNullOrEmpty

类型转化、时间格式化

ToString

整型转化

ToInt32

trim

TrimStart、TrimEnd、Trim

 ???????????using (DNetContext db = new DNetContext()) ???????????{ ???????????????var author = db.GetSingle<Author>(m => true, q => q.OrderBy(m => m.AuthorID)); ???????????????author = db.GetSingle<Author>(m => m.AuthorName.Contains("李四") && m.IsValid == true); ???????????????var authors= db.GetList<Author>(m => m.AuthorName.StartsWith("张三") && m.IsValid == true); ???????????????//获取动态类型 ???????????????List<dynamic> name = db.GetDistinctList<Author>(m => m.AuthorName.StartsWith("王五") && m.IsValid == true,m=>m.AuthorName); ???????????????????????????????List<string> name1 = db.GetDistinctList<Author,string>(m => m.AuthorName.StartsWith("王五") && m.IsValid == true, m => m.AuthorName); ???????????????????????????????//获取最大值 ???????????????var authorid = db.GetMax<Author>(m => (int)m.AuthorID); ???????????????//动态查询 ???????????????WhereBuilder<Author> where = new WhereBuilder<Author>(); ???????????????where.And(m=>m.AuthorName.Contains("张三")); ???????????????where.And(m => m.AuthorID==3); ???????????????where.Or(m=>m.IsValid==true); ???????????????db.GetList<Author>(where.WhereExpression); ???????????????//分页参数由前台传来 ???????????????PageFilter page = new PageFilter { PageIndex=1, PageSize=10 }; ???????????????page.And<Author>(m=> "守望者的天空".Contains(m.AuthorName)); ???????????????page.OrderBy<Author>(q=>q.OrderBy(m=>m.AuthorName).OrderByDescending(m=>m.AuthorID)); ???????????????PageDataSource<Author> pageSource= db.GetPage<Author>(page); ???????????}

多表查询

 ???????????using (DNetContext db = new DNetContext()) ???????????{ ???????????????var books = db.JoinQuery.LeftJoin<Book, Author>((m, n) => m.AuthorID == n.AuthorID && n.IsValid == true) ????????????????????.Fields<Book, Author>((m, n) => new { m, n.AuthorName }) ????????????????????.OrderByAsc<Book>(m => m.BookName) ????????????????????.Select<Book>(); ???????????????var join = db.JoinQuery.LeftJoin<Book, Author>((m, n) => m.AuthorID == n.AuthorID && n.IsValid == true) ????????????????????.Fields<Book, Author>((m, n) => new { m, n.AuthorName }) ????????????????????.OrderByAsc<Book>(m => m.BookName); ???????????????PageFilter page = new PageFilter { PageIndex = 1, PageSize = 10 };//分页参数前台传来 ???????????????join.SelectPage<Book>(page); ???????????}

事务的支持

 ???????????using (DNetContext db = new DNetContext()) ???????????{ ???????????????db.DataBase.BeginTransaction(); ???????????????try ???????????????{ ???????????????????List<Author> authors = new List<Author>(); ???????????????????for (int i = 0; i <= 100; i++) ???????????????????{ ???????????????????????authors.Add(new Author { AuthorName = "测试" + i.ToString(), Age = 20, IsValid = true }); ???????????????????} ???????????????????db.Add(authors); ???????????????????db.DataBase.Commit(); ???????????????} ???????????????catch ???????????????{ ???????????????????db.DataBase.Rollback(); ???????????????} ???????????}

SQL语句查询的支持

 ???????????using (DNetContext db = new DNetContext()) ???????????{ ???????????????StringBuilder sql = new StringBuilder(); ???????????????List<DbParameter> parameters = new List<DbParameter>(); ???????????????sql.AppendFormat(@"SELECT {0},A.AuthorName FROM Book B LEFT JOIN Author A ON A.AuthorID=B.AuthorID WHERE", SqlBuilder.GetSelectAllFields<Book>("B")); ???????????????sql.Append(" B.BookID>@BookID "); ???????????????parameters.Add(db.GetDbParameter("BookID",1)); ???????????????PageDataSource<Book> books = db.GetPage<Book>(sql.ToString(),new PageFilter { PageIndex=1, PageSize=5 }, parameters.ToArray()); ???????????????List<Book> bks = db.GetList<Book>(sql.ToString(), parameters.ToArray()); ???????????}

欢迎技术讨论

 最新代码下载

https://files.cnblogs.com/files/DNetORM/DNet.ORM4.0.rar

DNetORM 一款轻量级的ORM框架

原文地址:http://www.cnblogs.com/DNetORM/p/8000373.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved