0. 前言 前几天FreeSql的作者向我推荐了FreeSql框架,想让我帮忙写个文章介绍一下.嗯,想不到我也能带个货了.哈哈,开个玩笑-看了下觉得设计的挺有意思的,所以就谢了这篇文章. 简单介绍一下,FreeSql 是NCC组织的沙盒级项目,是一款功能强大的 ORM 组件,支持 .NET Core..NET Framework 和 Xamarin.目前 FreeSql 支持以下数据库:MySQL.PostgreSQL.SqlServer.Oracle.Sqlite.Odbc.微软 Access…
0. 前言 继上一篇,以及上上篇,我们对SqlSugar有了一个大概的认识,但是这并不完美,因为那些都是理论知识,无法描述我们工程开发中实际情况.而这一篇,将带领小伙伴们一起试着写一个能在工程中使用的模板类. 1. 创建一个Client SqlSugar在操作的时候需要一个Client,用来管理数据库连接,并操作数据库.所以我们写一个DbContext用来创建Client: public class DefaultContext { public SqlSugarClient Client {…
0. 前言 在<C# 数据操作系列 - 5. EF Core 入门>篇中,我们简单的通过两个类演示了一下EF增删改查等功能.细心的小伙伴可能看了生成的DDL SQL 语句,在里面发现了些端倪.没看的小伙伴也不急,这就贴出来. public class ModelA { public int Id { get; set; } public string Name { get; set; } public List<ModelB> ModelBs { get; } = new List…
0.前言 到目前为止,我们看了一下如何声明EF Core的初步使用,也整体的看了下EF Core的映射关系配置以及导航属性的配置. 这一篇,我带大家分享一下,我在工作中需要的EF Core的用法. 1. 初始化 在实际开发中,一般都是先设计好数据表再进行开发,所以很少用到EF Core的数据迁移功能.所以EF Core的初始化,一般也指的是EF Core上下文初始化. 1.1 连接字符串 我们通过前面的文章知道,EF Core在上下文初始化的时候,都需要一个链接字符串.如果在不考虑后续变更或者上…
0. 前言 上一篇<C# 数据操作系列 - 11 NHibernate 配置和结构介绍> 介绍了Nhibernate里的配置内容.这一篇将带领大家了解一下如何使用NHIbernate.之前提到NHibernate继承了Hibernate的一些传统:使用XML文件进行配置,这一点也是备受争议.不过,有社区爱好者开发了一个名为<Fluent NHibernate>的项目,用来支持NHibernate的流式配置.当然,NHibernate本身也提供了NHibernate.Mapping.…
0. 前言 前一篇我们详细的介绍了SqlSugar的增删改查,那些已经满足我们在日常工程开发中的使用了.但是还有一点点在开发中并不常用,但是却非常有用的方法.接下来让我们一起来看看还有哪些有意思的内容. 1. 不同寻常的查询 之前介绍了针对单个表的查询,同样也是相对简单的查询模式.虽然开发完全够用,但是难免会遇到一些特殊的情况.而下面这些方法就是为了解决这些意料之外. 1.1 多表查询 SqlSugar提供了一种特殊的多表查询方案,使用IQueryable接口 .来看看是怎样操作的吧: ISug…
0. 前言 在上一个系列中,我们初步浏览了一下C#的基础知识.这句话的意思就是C#基础知识系列完结了,撒花.当然,并不是因为C#已经讲完了.正是因为我们轻轻地叩开了那扇门,才能看到门后面那瑰丽的世界.那么,门后面有什么?就让我在后续的篇幅里,带着大家一起浏览吧. 0.1 C# 能做什么 之前在开发工具篇大概为大家介绍了.net 分的方向,.net framework,.net core,mono,UWP 这四个.严格讲这不是技术区分的方向,而是基于SDK的区分. 说起能完成的功能,接下来给大家看…
0.前言 前篇介绍了一些数据库的基本概念和以及一些常见的数据库,让我们对数据库有了一个初步的认识.这一篇我们将继续为C#数据操作的基础填上一个空白-SQL语句. SQL(Structured Query Language,结构化查询语言)是一种特定的编程语言,用于管理数据库系统,操作数据甚至编写一些程序. 当然,一方面因为时间问题,一方面因为各大数据库的区别(当然了,还有就是个人对SQL研究并不是那么深)所以这一篇就从SQL的基本操作入手,带领大家一起看看SQL的世界. 1. SQL的分类 在S…
子查询就是: 把一条sql语句放在一个括号里,当做另外一条sql语句查询条件使用 拿到这个结果以后 当做下一个sql语句查询条件mysql 数据操作  子查询 #1:子查询是将一个查询语句嵌套在另一个查询语句中. #2:内层查询语句的查询结果,可以为外层查询语句提供查询条件. #3:子查询中可以包含:IN.NOT IN.ANY.ALL.EXISTS 和 NOT EXISTS等关键字 #4:还可以包含比较运算符:= . !=.> .<等…
0.前言 <EF Core>实际上已经可以告一段落了,但是感觉还有一点点意犹未尽.所以决定分享一下,个人在实际开发中使用EF Core的一些经验和使用的扩展包. 1. EF Core的异步操作 正如这小节题目所言,EF Core是支持异步操作的,但实际可用集中在SaveChanges和异步查询这两个方法上. 具体方法声明如下: public virtual System.Threading.Tasks.Task<int> SaveChangesAsync (System.Threa…
0. 前言 在前一篇中我们讲到了Dapper的应用,但是给我们的感觉Dapper不像个ORM更像一个IDbConnection的扩展.是的,没错.在实际开发中我们经常用Dapper作为对EF Core的补充.当然了Dapper并不仅仅只有这些,就让我们通过这一篇文章去让Dapper更像一个ORM吧. 1. Dapper Contrib Dapper Contrib 扩展了Dapper对于实体类的CRUD方法: 安装方法: 命令行: dotnet add package Dapper.Contri…
0.前言 在上一篇中初略的介绍了一下SQL的基本写法,这一篇开始我们正式步入C#操作数据库的范围.通过这一系列的内容,我想大家能对于数据库交互有了一定的认识和基础.闲话不多说,先给大家介绍一个C#操作数据库的方式. 1. ADO.NET的介绍 在ADO.NET出现之前,C#连接数据库有很多种方式,各种框架琳琅满目.用户们饱受困扰,再加上乱七八糟的连接方式对语言的发展也是一种强有力的阻挠.所以微软决定搞一套标准化出来,之后ADO.NET诞生了. ADO.NET定义了一系列操作数据库的接口和基类,而…
在上一篇,大概介绍了Entity Framework Core关于关系映射的逻辑.在上一篇中留下了EF的外键映射没有说,也就是一对一,一对多,多对一,多对多的关系等.这一篇将为大家细细分析一下,如何设置这些映射. 1. 实体之间的关系 从数据表来考虑,两个表之前的关系有一对一,一对多(多对一)和多对多的关系. 其中一对一,指的是表A有一条记录对应着表B最多有一条记录与之对应.反过来也一样,表A也最多有一条记录与表B的某一条记录对应.具体在数据表上表现为,A表和B表各有一个外键指向对方. 一对多和…
0. 前言 在上一篇基本讲完了EF Core的入门级教程.从这一篇开始,我们试着去探索一下 .net core平台上更多的ORM框架.那么,这一篇开始我们就来试试NHibernate. 1. NHibernate 介绍 NHibernate是Hibernate的C#版,众所周知Hibernate是Java 里ORM的顶梁柱(至少曾经).Hibernate可以说开拓了Java的世界,当年SSH三驾马车风靡世界,至今Hibernate都发挥着举足轻重的作用. 不过,与EntityFramework不…
0. 前言 今天是NHibernate的第二篇内容,通过上一篇的内容,我们初步了解了NHibernate的创建和使用.这一篇,我继续探索NHibernate背后的秘密.嗯,就是这样. 1. NHibernate结构 先给小伙伴们放个图: 这是NHibernate的整体结构图.NHibernate通过ADO.NET 建立访问数据库的连接,然后封装了一个Transaction(事务)工厂和一个Session工厂.每次操作的时候,通过两个工厂获取对应的Session/Transaction示例操作数据…
0. 前言 前言,暂时挥别NHibernate(虽然我突然发现这玩意还挺有意思的,不过看得人不多).大步进入了有很多小伙伴向我安利的SQLSugar,嗯,我一直叫SugarSQL,好像是这个吧? 这是一个由国内开发者开发的ORM框架,是一个轻量级框架(最新版的sqlSugarCore大概只有290kb).下图是sqlSugar的功能描述: 从图中我们能够大概看出,SqlSugar的使用需要预先创建一个SqlSugarClient对象.SqlSugar在此基础上添加了CRUD.实体信息维护(映射关…
0.前言 在上一篇中,我们知道了如何使用SqlSugar,但是也只是简单的了解了如何使用,仿佛是套着镣铐行走,这明显不符合一个合格的程序员应有的素养.所以,这一篇我们将对其进行深挖,探究其背后的秘密. 1. 花式映射 在实际开发中,程序中的实体类和数据库的表名并不能完全一致,造成的原因有很多,例如说团队对数据库的命名和对程序的命名有着不同的要求,数据库是先建立的而程序是后开发的,又或者是程序只使用了数据库中一部分表等等. 这时候就会与C#约定优于配置相违背,但是这也符合C#的设计哲学,因为配置也…
0. 前言 之前四篇介绍了一个国内开发者开发的优秀框架SqlSugar,给我们眼前一亮的感觉.这一篇,我们将试试另一个出镜率比较高的ORM框架-Dapper. Dapper是一个轻量级的ORM框架,其以高速.简单易用为特点.在某些时候,效率甚至可以与ADO.NET 媲美.那么,吹得天花乱坠,就让我们实际看看它的表现吧. 1. 开始使用 照例,先创建一个项目:DapperDemo dotnet new console --name DapperDemo 然后切换到目录里: cd DapperDem…
0. 前言 在上一篇中,我故意留下了查询的示范没讲.虽然说可以通过以下代码获取一个DataReader: IDataReader reader = command.ExecuteReader(); 然后通过reader一行一行的读取数据,但是我并不推荐这样使用. 在查询这一高频需求上,C#为之做了很多工作,提供了更多的选择.这里介绍一个查询的另一套写法. 1. 离线查询 C#在查询上提供了另一种机制,可以一次性从数据库把结果读取到网络缓存区中,直到使用的时候才加载到程序中. 在离线查询里最关键的…
0. 前言 在之前的几篇内容中,我们了解了如何通过ADO.NET 访问数据库,如何修改.新增数据.如何通过DataSet和DataAdapter获取数据,我们将在这一篇试试自己实现一个简单的ORM框架或者说ORM工具类. 涉及到的知识点: 反射(初级) ADO.NET 已有知识 1. ORM 那么,问题来了,什么是ORM?ORM全称 Object Relational Mapping,翻译过来就是对象关系映射.是一种通过描述对象与数据库之间映射关系的数据,将对象保存到数据库中的技术. 在C#中,…
0.前言 上一章简单介绍了一下ORM框架,并手写了一个类似ORM的工具类.这一章将介绍一个在C#世界里大名鼎鼎的ORM框架--Entity Framework的Core版. Entity Framework 非Core版目前已经更新到了6代,这是一款经过检验的ORM框架.在这里简单介绍一下Entity Framework(简称EF,额,别拿这个当关键字搜索,要不然你会被忽悠到一个英语培训机构的)的优点. C#的设计理念是约定优于配置,意思就是通过一定程度的规范性格式化的写法来避免使用配置文件或者…
group by 是在where 之后运行 在写单表查询语法的时候 应该把group by 写在 where 之后 执行顺序 1.先找到表 from 库.表名 2.按照where 约束条件 过滤你想要的记录 3.group by 进行分组 4.分完组以后 再进行相应的查询 分组查询:GROUP BY 一 什么是分组?为什么要分组? 分类一定要找大家都有一样的属性 #.首先明确一点:分组发生在where之后,即分组是基于where之后得到的记录而进行的 #.分组指的是:将所有记录按照某个相同字段进…
1   数据表 1.1.数据表是存放数据字段信息的地方:在Oracle,数据表拥有者单位是用户,同时数据表属于表空间.如: 登录my_user用户在orcl表空间下创建的表就是 my_user用户在ocrl表空间下的数据表(有点绕,多用用就了解了) 2   创建数据表 2.1.创建数据表 create table RYXXB( -- 创建表名 RYID ) primary key, -- primary key 设置主键 RYXX ) not null, -- not null 不可为空 RYB…
0   前言 用过 SQLserver 和 MySQL 的自增列(auto_increment),然而 Oracle 在建表设置列时却没有自增列. 查阅资料后发现 Oracle 的自增列需要手动编写. 1   序列  1.1.创建序列(sequence) create sequence [sequence_name] --创建序列 increment --递增步长为1 start --开始值为1 nomaxvalue --没有最大值 (设置最大值:maxvalue 1000) minvalue…
1   表空间是什么 1.1.数据表看做的货品,表空间就是存放货品的仓库.SQLserver 用户可以把表空间看做 SQLserver 中的数据库. 1.2.引用[日记二]的总结来解释表空间. 一个数据库由一个或多个表空间组成,一个表空间只能属于一个数据库一个表空间由一个或多个多个数据文件组成,一个数据文件只能属于一个表空间一个数据文件由一个或多个操作系统块组成,每一个操作系统块只能数以一个数据文件一个表空间可以包含一个或多个段,一个段只能属于一个表空间一个段由一个或多个区组成,每一个区只能属于…
1   用户是什么 1.1.权限管理是Oracle的精华,不同用户登录到同一数据库中,可能看到不同数量的表,拥有不同的权限.Oracle 的权限分为系统权限和数据对象权限,共一百多种.如果把Oracle数据库看做仓库,表空间相当于仓库中的库房,数据表就是存放在仓库库房中的货品.用户相当于仓库管理员,仓库管理员可以管理一个或多个仓库库房,但仓库管理员只属于一个仓库.(作为SqlServer用户,表空间类似SqlServer中的数据库,sys/system用户类似SqlServer中的sa用户) 1…
1.SID(数据库实例) 1.1. oracle安装的时候有一项叫[全局数据库名]的填写项,这个就是oracle的SID也是数据库的唯一标识符: 1.2.一个oracle数据库有且只有一个SID(一般情况一台服务器或桌面机只有一个SID),SID主要用于一些DBA操作以及与操作系统交互,例如,远程连接数据库就需要指定SID: 1.3.PL/SQL 连接 格式 : username@ip:1500/SID 1.4.安装oracle时命名,SID存在于注册表中,可以修改: 1.5.在Windows下…
学习日记系列(前辈/大神勿喷) 一.下载 下载地址:http://www.oracle.com/technetwork/cn/database/enterprise-edition/downloads/index.html 下载系统对应版本.下载后解压,双击setup.exe文件开始安装. 二.安装 2.1.配置安全更新这里可以不填写邮箱. 2.1.1.弹出提示直接选“是”即可 2.1.2.在检测安装环境时可能会出现(如下图)提示的错误,解决方法请 点击此处 专门详解该问题的解决办法. 2.2.…
mysql 数据操作 多表查询 准备 多表连接查询介绍 mysql 数据操作 多表查询 多表连接查询 笛卡尔积 mysql 数据操作 多表查询 多表连接查询 内连接 mysql 数据操作 多表查询 多表连接查询 外链接之左连接 右连接 mysql 数据操作 多表查询 多表连接查询 全外连接 子查询介绍 mysql 数据操作 多表查询 子查询 介绍 mysql 数据操作 多表查询 子查询 带IN关键字的子查询 mysql 数据操作 多表查询 子查询 带比较运算符的子查询 mysql 数据操作 多表…
mysql 数据操作 单表查询 group by 介绍 mysql 数据操作 单表查询 group by 聚合函数 mysql 数据操作 单表查询 group by 聚合函数 没有group by情况下 mysql 数据操作 单表查询 group by group_concat() 函数 mysql 数据操作 单表查询 group by 注意 mysql 数据操作 单表查询 group by 练习…