dbconnection

【快速入门ORM框架之Dapper】大牛勿进系列

Deadly 提交于 2020-04-25 16:04:45
前言:dapper是什么?Dapper是.NET下一个micro的ORM,它和Entity Framework或Nhibnate不同,属于轻量级的,并且是半自动的。也就是说实体类都要自己写。它没有复杂的配置文件,一个单文件就可以了。 使用:在项目中nuget下载即可,dapper如何使用呢?它和EF不同,我们什么的配置都需要手写,连接配置,实体,上下文,这和ADO.NET有一点相似点。 实战:  配置Users表 create database TextInfo USE TEXTINFO create table Users ( UserID INT IDENTITY(1,1) NOT NULL, UserName varchar(50) Null, Email [varchar](100) Null, [Address] [varchar](100) Null )  创建连接字符串 <connectionStrings> <add name="CnnhoRechargePlatformConnectionString" connectionString="Data Source=DESKTOP-OEJGKOO;Initial Catalog=TextInfo;Integrated Security=True"/> </connectionStrings>

Asp.net Core 系列之--2.ORM初探:Dapper实现MySql数据库各类操作

て烟熏妆下的殇ゞ 提交于 2020-04-25 15:13:48
ChuanGoing 2019-09-10 距离上一篇近一个月时间,断断续续才把本篇码完,后面将加快进度,争取年度内把本系列基本介绍完成,同时督促本人持续学习。 本篇学习曲线: 1.初识Dapper 2.DbConnection 3.CommandBuilder实现单表操作(略) 4.演示 初识Dapper Dapper是一个轻量级/高性能的ORM,核心功能是利用Emit反射获取IDataReader中的数据。我们可以利用它的对象关系映射实现简单CURD操作,或者直接用SQL语句实现复杂场景的CURD操作。 DbConnection 顾名思义,数据库连接对象。Dapper提供DbConnection对象的扩展来操作数据库 public virtual int Execute( string sql, object param = null , int ? commandTimeout = null , CommandType? commandType = null ) { return _dbConnection.Execute(sql: sql, param: param, transaction: null , commandTimeout: commandTimeout, commandType: commandType); } public virtual

Dapper一个和petapoco差不多的轻量级ORM框架

做~自己de王妃 提交于 2020-04-25 14:31:53
我们都知道ORM全称叫做Object Relationship Mapper,也就是可以用object来map我们的db,而且市面上的orm框架有很多,其中有一个框架 叫做dapper,而且被称为the king of ORM。 一:为什么选择Dapper 1. 性能优越: 其实在各大网站上,我们大概都会看到这样的一个对比效果图,在超过500次poco serialization的过程中所表现的性能,我们发现dapper是第二名, 当然第一名谁也无法超越,越底层的当然久越快,同时也就越麻烦。就好像谁能超过“01代码”呢??? 2. 支持多数据库 支持多数据库的本质是因为Dapper是对IDBConnection接口进行了方法扩展,比如你看到的SqlMapper.cs,一旦你这样做了,我们也知道, SqlConnection,MysqlConnection,OracleConnection都是继承于DBConnection,而DBConnection又是实现了IDBConnection的接口,对吧。。。 二:安装Dapper install dapper的方式通常有两种: 1. 通过nuget进行安装   如果你不知道怎么用nuget进行安装,或者不知道install-package是什么,可以在browser上找一下,比如下面这样: 然后我们copy到package console

async,await执行流看不懂?看完这篇以后再也不会了

自作多情 提交于 2020-04-23 22:32:22
昨天有朋友在公众号发消息说看不懂await,async执行流,其实看不懂太正常了,因为你没经过社会的毒打,没吃过牢饭就不知道自由有多重要,没生过病就不知道健康有多重要,没用过ContinueWith就不知道await,async有多重要,下面我举两个案例佐证一下? 一:案例一 【嵌套下的异步】 写了这么多年的程序,相信大家都知道连接数据库少不了这几个对象,DbConnection,DbCommand,DbDataReader等等。。先来看看ContinueWith在连接数据库时嵌套过深的尴尬。 1. NetFramework 4.0之前的写法 这个时期的代码没有什么好说的,都是程式代码,一撸到底,简洁明了。 public static int SyncGetCount() { using (var connection = new MySqlConnection("server=xxx.xxx.xxx.xxx;userid=xxx;password=xxx;database=xxx;charset=utf8;port=3306;")) { connection.Open(); using (var command = connection.CreateCommand()) { command.CommandText = "select count(1) from messages"

async,await执行流看不懂?看完这篇以后再也不会了

孤人 提交于 2020-04-23 22:00:41
昨天有朋友在公众号发消息说看不懂await,async执行流,其实看不懂太正常了,因为你没经过社会的毒打,没吃过牢饭就不知道自由有多重要,没生过病就不知道健康有多重要,没用过ContinueWith就不知道await,async有多重要,下面我举两个案例佐证一下? 一:案例一 【嵌套下的异步】 写了这么多年的程序,相信大家都知道连接数据库少不了这几个对象,DbConnection,DbCommand,DbDataReader等等。。先来看看ContinueWith在连接数据库时嵌套过深的尴尬。 1. NetFramework 4.0之前的写法 这个时期的代码没有什么好说的,都是程式代码,一撸到底,简洁明了。 public static int SyncGetCount() { using (var connection = new MySqlConnection("server=xxx.xxx.xxx.xxx;userid=xxx;password=xxx;database=xxx;charset=utf8;port=3306;")) { connection.Open(); using (var command = connection.CreateCommand()) { command.CommandText = "select count(1) from messages"

Reface.AppStarter 框架初探

ⅰ亾dé卋堺 提交于 2020-04-05 17:35:38
Reface.AppStarter 是一种基于 .NetFramework 的应用程序启动模式,使用该启动模式,你可以轻松的得到以下功能 : IOC / DI 自动注册与装配 简化配置 垂直模块化你的代码 事件总线功能 命令总线 功能 定义模块的依赖项 对模块内的类型进行扫描并分类管理 1 安装 通过 Nuget 你可以很轻松的安装并使用它。 2 设计理念 2.1 模块化 模块是系统组成的最小颗粒, 每一个模块都应当向系统提供一个单一的功能或业务,比如 Excel导出,缓存,用户管理等等。 原则上,我们建议你的每一个 Library 都是一个模块。 在 Reface.AppStarter 中,每一个模块都应当申明一个 AppModule 作为提供给外部依赖的类型。 public class MyAppModule : AppModule { } 2.2 模块依赖 模块与模块之间存在依赖关系, 如上图,启动模块依赖模块A,启动模块就可以得到模块A中的功能,模块A也可以增加启动模块的功能。 整个系统只能有一个启动模块,由它作为 ROOT 向下展开。 例如 一个用户模块可能依赖 Excel导入导出、日志、缓存模块,一个缓存模块可能依赖 AOP、日志模块等等。 在 Reface.AppStarter 中,当 A 模块依赖 B 模块时,我们把 B 称作为的 DependentModule,将

架构师内功心法,软件架构设计的七大原则精选案例

不羁岁月 提交于 2020-02-28 06:01:39
一、软件架构设计的七大原则简介 1.1 开闭原则(Open-Closed Principle,OCP) 开闭原则是一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。所谓的开闭也是对扩展和修改两个行为的一个原则。强调是用抽象扩展架构,用实现扩展细节。可以提高软件系统的可复用性及可维护性。开闭原则,是面向对象设计中最基础的设计原则。它指导我们如何建立稳定灵活的系统,例如: 版本更新,我们尽可能不修改代码,但是可以增加新功能。 在现实生活中也有很多开闭原则的例子,比如,很多互联网公司都实行弹性的工作时间,规定每天工作8小时。意思就是说,对于工作日每天工作8小时这个规定是关闭的,但是你什么时候来,什么时候走是开放的。早来早走,晚来晚走。 实现开闭原则的核心思想就是面向抽象编程,以某新华书店的图书为例,首先创建一个课程接口类: public class IBook { Integer getId(); String getName(); Double getPrice(); } 我们来创建一个计算机图书的类ComputerBook: public class ComputerBook implements IBook { private Integer id; private String name; protected Double price; public

ADO.NET事务封装

痞子三分冷 提交于 2020-02-26 15:35:13
在数据库工具类编写的过程中,对事务的处理操作想避免各个原子操作的事务对象赋值重复操作,想对外暴露的方法为如下形式 public bool ExecuteTransition ( Action TransitionAction, out string ExceptionStr ) 外部传入的数据库操作都使用委托统一打包,内部进行事务操作。我们首先需要明白的是,数据库事务操作在ADO.NET的编码中的体现是,DbConnection为同一个,DbCommand的Transaction为同一个。 首先我们需要识每一个数据库操作的上下文,是否在TransitionAction这个委托中,为了简单明了,在执行TransitionAction时开启一个Task,取得当前线程的ThreadID作为这个事务委托的唯一标识,并生成一个DbTransaction放入一个TransactionDic中,在SqlHelper执行类中执行SQL语句创建Connection时,取得当前的ThreadID去TransactionDic中查找,如果有对应的Transition则说明该SQL语句的执行是在一个事务中,Connection直接取Transition的数据库连接,并给DbCommand的Transition对象赋值

How to get EFProf and EFProviderWrapper working together in on Entity Framework Connection

北城以北 提交于 2020-01-14 10:14:07
问题 Has anyone found a way to get Kowalski's EFProviderWrapper framework to run alongside Rhino's EFProf (Entity Framework Profiler) within the same Entity Framework context/connection? Currently if i try to register the EFProf Profiler while using an EntitytConnection wrapped with the EFProviderWrapper i get the following error at runtime when a new connection is attempted to be created: Unable to cast object of type 'HibernatingRhinos.Profiler.Appender.ProfiledDataAccess.ProfiledConnection' to

Is using a singleton for the connection a good idea in ASP.NET website

独自空忆成欢 提交于 2020-01-09 05:27:06
问题 I'm currently using a singleton on my web application so that there is always only one connection to the database. I want to know if it's a good idea because right now I'm having trouble with that error: Timeout expired. The timeout period elapsed prior to obtaining a connection from the pool. This may have occurred because all pooled connections were in use and max pool size was reached. Another important point is that my website is currently in dev and not a lot of people go on it so I don