DNetORM 一款轻量级的ORM框架

使用介绍

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

时间: 2024-10-10 07:41:44

DNetORM 一款轻量级的ORM框架的相关文章

推荐一款轻量级PHP数据库框架–Medoo

引用官网的简介: 可以加快开发速度的最轻量级的PHP数据库框架 为什么选择Medoo及其主要功能: 轻量级–单个文件,只有20KB 易用–非常容易学习和使用 功能强大–支持各种常见和复杂的SQL查询 兼容性–支持非常多的数据库类型,如MySQL, MSSQL, SQLite, MariaDB, Sybase, Oracle, PostgreSQL等等 安全–防止SQL注入 免费–基于MIT license,你可以在任何地方使用 开始使用 下载 Medoo 并把它放到你想要的目录,然后通过下面的三

CRL开发框架发布了,一款面向对象的ORM框架

CRL是一个面向对象的轻便型ORM业务框架数据处理使用了对象/数据映射,条件查询采用Lambda表达式来表示,增加了可编程性和可靠性,出错机率低,同时也能用原生的SQL实现查询或操作数据连接以编程方式进行配置,支持多个库,参见Global.asax中实现,首次使用请更改LocalSqlHelper.CreateDbHelper中数据连接通过业务对象封装继承,实现业务重用性,比较常用的封装有,会员/账户系统,字典配置,分类系统,在线支付,订单/购物车,权限验证/菜单系统等等,当然也可以写自已的业务

轻量级高性能ORM框架:Dapper高级玩法

Dapper高级玩法1: 数据库中带下划线的表字段自动匹配无下划线的Model字段. Dapper.DefaultTypeMap.MatchNamesWithUnderscores = true; 备注: 这个对使用Mysql数据库的朋友最有帮助,因为Mysql默认都是小写,一般字段都带下划线,比如:user_name之类. 具体效果如下演示 1,首先创建一张表并插入数据 2,创建Model模型 public class User { public int UserID { get; set;

android 超轻量级的ORM框架

一.测试性能Demo 首先给大家一个性能测试的Demo,看看性能如何. Demo.apk 二.相关操作CRUD Entity: import android.annotation.SuppressLint; //依赖注入配置 @SuppressLint("UseValueOf") public class Entity { /** * 默认主键,自增.最好有id主键,便于debug和逻辑判断. * * 暂不支持自定义主键 */ int id; public boolean base_b

PetaPoco - 轻量级高性能的ORM框架(支持.NET Core)

我们都知道ORM全称叫做Object Relationship Mapper,也就是可以用object来map我们的db. 而且市面上的orm框架有很多,有重量级的Entity Framework,有轻量级的Dapper.PetaPoco等 假如你喜欢原生的Sql语句.又喜欢ORM的简单.又追求高性能,那么轻量级的ORM框架是你的不二选择. 说到轻量级ORM框架Dapper的名气比较大(因为出自名门?),但我却选择使用PetaPoco,因为: 提供了更易用的API Dapper仅提供了一系列Qu

Android ORM 框架之 ActiveAndroid应用基础

ActiveAndroid作为轻量级的ORM框架,在快速开发中,使用很简单,满足大部分对数据库操作不复杂的应用. 一,配置 添加依赖 build.gradle中添加: repositories { mavenCentral() maven { url "https://oss.sonatype.org/content/repositories/snapshots/" } } compile 'com.michaelpardo:activeandroid:3.1.0-SNAPSHOT'

打造android ORM框架opendroid(二)——自动创建数据库

在上一篇博客<打造android ORM框架opendroid(一)--ORM框架的使用>中相信你已经了解了opendroid的使用,那么从这篇博客开始,我们正式进入opendroid的源码分析,打造一款自己的ORM框架! 在正式开始之前,你需要保证手里有一份opendroid的源码,如果还没下载opendroid,请到http://git.oschina.net/qibin/OpenDroid 下载opendroid的源码. 任何数据库操作都是从创建数据库开始的,今天我们就来看看opendr

打造一款人见人爱的ORM(一)

      "很多人都不太认可以第三方ORM,因为考虑的点不够全面,没有用户群体大的ORM有保证,这点是不可否认确是事实.但是往往用户群体大的ORM又有不足之处,今天我们就来聊聊关于ORM的话题,打造一款人见人爱的ORM框架." 小程简介       季健国(蚂蚁Ant),10年的工作经验, 7年的IT经验是一枚名副其实的老菜鸟.技术无边界,编程靠思想.目前主要研究方向为ORM底层核心,爬虫,WebAPI,SOA,Docker,Xamarin,微信小程序,微服务架构:个人爱好:阅读,跑

轻量级ORM框架初探-Dapper与PetaPoco的基本使用

一.EntityFramework EF是传统的ORM框架,也是一个比较重量级的ORM框架.这里仍然使用EF的原因在于为了突出轻量级ORM框架的性能,所谓有对比才有更优的选择. 1.1 准备一张数据库表 (1)For MSSQL CREATE TABLE [dbo].[Posts] ( [Id] INT NOT NULL PRIMARY KEY IDENTITY, [CategoryId] INT NOT NULL, [Slug] VARCHAR(120) NOT NULL, [Title] N