dapper

Using IAsyncEnumerable with Dapper

好久不见. 提交于 2020-03-05 02:51:06
问题 We have recently migrated our ASP.NET Core API which uses Dapper to .NET Core 3.1. After the migration, we felt there was an opportunity to use the latest IAsyncEnumerable feature from C# 8 for one of our endpoints. Here is the pseudocode before the changes: public async Task<IEnumerable<Item>> GetItems(int id) { var reader = await _connection.QueryMultipleAsync(getItemsSql, param: new { Id = id }); var idFromDb = (await reader.ReadAsync<int?>().ConfigureAwait(false)).SingleOrDefault(); if

Dapper 获取 DataTable

主宰稳场 提交于 2020-02-27 01:06:02
using (SqlConnection conn = new SqlConnection(connStr)) { var reader = conn.ExecuteReader("SELECT * FROM TestTb "); var table = new DataTable(); table.Load(reader); 来源: oschina 链接: https://my.oschina.net/u/4006447/blog/3158333

一文详解微服务架构

心不动则不痛 提交于 2020-02-26 05:33:28
本文将介绍微服务架构和相关的组件,介绍他们是什么以及为什么要使用微服务架构和这些组件。本文侧重于简明地表达微服务架构的全局图景,因此不会涉及具体如何使用组件等细节。 要理解微服务,首先要先理解不是微服务的那些。通常跟微服务相对的是单体应用,即将所有功能都打包成在一个独立单元的应用程序。从单体应用到微服务并不是一蹴而就的,这是一个逐渐演变的过程。本文将以一个网上超市应用为例来说明这一过程。 最初的需求 几年前,小明和小皮一起创业做网上超市。小明负责程序开发,小皮负责其他事宜。当时互联网还不发达,网上超市还是蓝海。只要功能实现了就能随便赚钱。所以他们的需求很简单,只需要一个网站挂在公网,用户能够在这个网站上浏览商品、购买商品;另外还需一个管理后台,可以管理商品、用户、以及订单数据。 我们整理一下功能清单: 网站 用户注册、登录功能 商品展示 下单 管理后台 用户管理 商品管理 订单管理 由于需求简单,小明左手右手一个慢动作,网站就做好了。管理后台出于安全考虑,不和网站做在一起,小明右手左手慢动作重播,管理网站也做好了。总体架构图如下: 小明挥一挥手,找了家云服务部署上去,网站就上线了。上线后好评如潮,深受各类肥宅喜爱。小明小皮美滋滋地开始躺着收钱。 随着业务发展…… 好景不长,没过几天,各类网上超市紧跟着拔地而起,对小明小皮造成了强烈的冲击。 在竞争的压力下

EF、Dapper、NHibernate等ORM框架的比较及优缺点

荒凉一梦 提交于 2020-02-26 03:25:09
什么是ORM? ORM的全称是Object Relational Mapping,即对象关系映射。它的实现思想就是将关系数据库中表的数据映射成为对象,以对象的形式展现,这样开发人员就可以把对数据库的操作转化为对这些对象的操作。因此它的目的是为了方便开发人员以面向对象的思想来实现对数据库的操作。 ORM实现原理 对象到数据库的映射; 对象与数据库数据的互相转换; 重量级ORM, 以EntityFramework、NHibernate为代表 优点 面向对象方式访问数据库,摆脱SQL 可移植性强,支持所有流行的数据库 面向接口的设计,可扩充性强 对事务、缓存(一级缓存)有良好的封装及配置 缺点 比较复杂,学习曲线大; 处理对象关联很容易出错; 不适合统计查询系统; 对于多表连查,复杂的sql实现比较复杂,而且有可能需要借助其他方案; 自动生成的sql查询执行效率低; 对于大数据量、高负载场景需要慎重考虑; 实现良好的二级缓存很困难,并且只能定制; 轻量级ORM 以dapper为代表,并且是半自动的。也就是说实体类都要自己写,Dapper相当于Java里的Mybatis。 优点: 1、开源、轻量、小巧(单文件,代码就一个SqlMapper.cs文件,编译后就40K的一个很小的Dll.)、上手容易。支持poco及动态类型,缩写词:POCO's (plain old CLR objects)。

dapper使用

眉间皱痕 提交于 2020-02-24 16:50:12
dapper使用 访问量不大的项目我都是用EF写数据库操作,因为EF除了速度上慢以外,但开发效率极快,省略了很多sql写法,并能很方便的调用外键、集合等信息,用EF写项目最爽的事。不过有些项目网站要考虑运行速度,这时不得不用其它的ORM框架,我常用dapper,因为它效果快,而且写sql非常灵活,接下来面写一些方法看看dapper的使用 1、连接语句 var conn = new SqlConnection(ConfigurationManager.ConnectionStrings["SqlDiagnosticsDb"].ConnectionString); 使用dapper不需要考虑conn是否连接,在执行dapper时自行判断 open状态,如果没有打开它会自己打开。 2、insert string query = "INSERT INTO Book(Name)VALUES(@name)"; conn.Execute(query, book); book类中有name属性,就可以这样方便去写,当然也可以写成 string query = "INSERT INTO Book(Name)VALUES(@name)"; conn.Execute(query, new{@name=book.name}); 3、update string query = "UPDATE Book

Dapper记录

无人久伴 提交于 2020-02-24 16:48:53
List Support Dapper允许您传入IEnumerable<int>,并将自动参数化查询 例如: connection.Query<int>("select * from (select 1 as Id union all select 2 union all select 3) as X where Id in @Ids", new { Ids = new int[] { 1, 2, 3 } }); 将转化为: select * from (select 1 as Id union all select 2 union all select 3) as X where Id in (@Ids1, @Ids2, @Ids3)" // @Ids1 = 1 , @Ids2 = 2 , @Ids2 = 3 Multi Mapping Dapper允许您将一行映射到多个对象。如果您想避免无关的查询和急切的加载关联,这是一个关键特性。 例如: 两个类 Post和User class Post { public int Id { get; set; } public string Title { get; set; } public string Content { get; set; } public User Owner { get; set; } } class User {

Dapper基础用法

这一生的挚爱 提交于 2020-02-24 15:48:28
假如你喜欢原生的Sql语句,又喜欢ORM的简单,那你一定会喜欢上Dapper这款ROM. 点击下载 Dapper的优势: 1,Dapper是一个轻型的ORM类。代码就一个SqlMapper.cs文件,编译后就40K的一个很小的Dll. 2,Dapper很快。Dapper的速度接近与IDataReader,取列表的数据超过了DataTable。 3,Dapper支持什么数据库。Dapper支持Mysql,SqlLite,Mssql2000,Mssql2005,Oracle等一系列的数据库,当然如果你知道原理也可以让它支持Mongo db 4,Dapper的r支持多表并联的对象。支持一对多 多对多的关系。并且没侵入性,想用就用,不想用就不用。无XML无属性。代码以前怎么写现在还怎么写。 5,Dapper原理通过Emit反射IDataReader的序列队列,来快速的得到和产生对象。性能实在高高高。 6,Dapper支持net2.0,3.0,3.5,4.0。【如果想在Net2.0下使用,可以去网上找一下Net2.0下如何配置运行Net3.5即可。】 7,Dapper语法十分简单。并且无须迁就数据库的设计。 下面介绍Dapper如何使用,来进行高效开发,以下操作是编译后在Net3.5下操作的例子,Net4.0下大部分函数有默认值,参数很简单。 //数据库里的表: CREATE TABLE

Dapper ORM 用法

匆匆过客 提交于 2020-02-24 15:47:31
假如你喜欢原生的Sql语句,又喜欢ORM的简单,那你一定会喜欢上Dapper这款ROM. 点击下载 Dapper的优势: 1,Dapper是一个轻型的ORM类。代码就一个SqlMapper.cs文件,编译后就40K的一个很小的Dll. 2,Dapper很快。Dapper的速度接近与IDataReader,取列表的数据超过了DataTable。 3,Dapper支持什么数据库。Dapper支持Mysql,SqlLite,Mssql2000,Mssql2005,Oracle等一系列的数据库,当然如果你知道原理也可以让它支持Mongo db 4,Dapper的r支持多表并联的对象。支持一对多 多对多的关系。并且没侵入性,想用就用,不想用就不用。无XML无属性。代码以前怎么写现在还怎么写。 5,Dapper原理通过Emit反射IDataReader的序列队列,来快速的得到和产生对象。性能实在高高高。 6,Dapper支持net2.0,3.0,3.5,4.0。【如果想在Net2.0下使用,可以去网上找一下Net2.0下如何配置运行Net3.5即可。】 7,Dapper语法十分简单。并且无须迁就数据库的设计。 下面介绍Dapper如何使用,来进行高效开发,以下操作是编译后在Net3.5下操作的例子,Net4.0下大部分函数有默认值,参数很简单。 //数据库里的表: CREATE TABLE

Transaction can't handle parallel commands via Task.WhenAll

眉间皱痕 提交于 2020-02-24 10:19:53
问题 I have some main table (like Companies) and a lot of dependent tables (like CompanyAddresses, CompanyPaymentInfos, etc.) in my Postgres DB: CREATE TABLE Companies ( Id uuid NOT NULL PRIMARY KEY, ...); CREATE TABLE CompanyAddresses( CompanyId uuid NOT NULL PRIMARY KEY REFERENCES Companies(Id), ...); CREATE TABLE CompanyPaymentInfos( CompanyId uuid NOT NULL PRIMARY KEY REFERENCES Companies(Id), ...); I use transactions from standard library in my C# code: private TransactionScope

Transaction can't handle parallel commands via Task.WhenAll

混江龙づ霸主 提交于 2020-02-24 10:19:38
问题 I have some main table (like Companies) and a lot of dependent tables (like CompanyAddresses, CompanyPaymentInfos, etc.) in my Postgres DB: CREATE TABLE Companies ( Id uuid NOT NULL PRIMARY KEY, ...); CREATE TABLE CompanyAddresses( CompanyId uuid NOT NULL PRIMARY KEY REFERENCES Companies(Id), ...); CREATE TABLE CompanyPaymentInfos( CompanyId uuid NOT NULL PRIMARY KEY REFERENCES Companies(Id), ...); I use transactions from standard library in my C# code: private TransactionScope