using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Dapper; namespace DapperTest
{
class Program
{
static void Main(string[] args)
{
IDbConnection conn = new SqlConnection("Server=.;Database=Dapper;Uid=sa;Pwd=******;"); //Book book = new Book();
//book.Name = "C#本质论";
//string query = "INSERT INTO Book(Name)VALUES(@name)";
////对对象进行操作
//conn.Execute(query, book);
////直接赋值操作
//conn.Execute(query, new { name = "C#本质论" }); //string query = "UPDATE Book SET Name=@name WHERE id =@id";
//conn.Execute(query, new{name="C# VS Java",id=3}); //Book book = new Book() { Id = 3 };
//string query = "DELETE FROM Book WHERE id = @id";
//conn.Execute(query, book);
//conn.Execute(query, new { id = 5 }); //string query = "SELECT * FROM Book";
////无参数查询,返回列表,带参数查询和之前的参数赋值法相同。
//var l= conn.Query<Book>(query).ToList(); //返回单条信息
//string query = "SELECT * FROM Book WHERE id = @id";
//var book = conn.Query<Book>(query, new { id = 8 }).SingleOrDefault(); //查询图书时,同时查找对应的书评,并存在List中。实现1--n的查询操作
//string query = "SELECT * FROM Book b LEFT JOIN BookReview br ON br.BookId = b.Id WHERE b.id = @id";
//Book lookup = null;
////Query<TFirst, TSecond, TReturn>
//var b = conn.Query<Book, BookReview, Book>(query,
// (book, bookReview) =>
// {
// //扫描第一条记录,判断非空和非重复
// if (lookup == null || lookup.Id != book.Id)
// lookup = book;
// //书对应的书评非空,加入当前书的书评List中,最后把重复的书去掉。
// if (bookReview != null)
// lookup.Reviews.Add(bookReview);
// return lookup;
// }, new { id = 8 }).Distinct().SingleOrDefault(); //1--1操作
//BookReview br;
//string query = "SELECT * FROM BookReview br LEFT JOIN Book b ON br.BookId = b.Id WHERE br.id = @id";
//using (conn)
//{
// br = conn.Query<BookReview, Book, BookReview>(query,
// (bookReview, book) =>
// {
// bookReview.AssoicationWithBook = book;
// return bookReview;
// }, new { id = 4 }).SingleOrDefault(); //} if (conn.State == ConnectionState.Closed)
{
conn.Open();
}
using (conn)
{
//开始事务
IDbTransaction transaction = conn.BeginTransaction();
try
{
string query = "delete from book where id = @id";
string query2 = "delete from BookReview where BookId = @BookId";
conn.Execute(query2, new { BookId = 7 }, transaction, null, null);
conn.Execute(query, new { id = 7 }, transaction, null, null);
//提交事务
transaction.Commit();
}
catch (Exception ex)
{
//出现异常,事务Rollback
transaction.Rollback();
throw new Exception(ex.Message);
}
} Console.WriteLine("Ok");
Console.ReadKey();
}
} public class Book
{
public Book()
{
Reviews = new List<BookReview>();
}
public int Id { get; set; }
public string Name { get; set; }
public virtual List<BookReview> Reviews { get; set; }
public override string ToString()
{
return string.Format("[{0}]------《{1}》", Id, Name);
}
} public class BookReview
{
public int Id { get; set; }
public int BookId { get; set; }
public virtual string Content { get; set; }
public virtual Book AssoicationWithBook { get; set; }
public override string ToString()
{
return string.Format("{0})--[{1}]\t\"{3}\"", Id, BookId, Content);
}
} /*
* USE [Dapper]
*
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[BookReview](
[Id] [int] IDENTITY(1,1) NOT NULL,
[BookId] [int] NOT NULL,
[Content] [nvarchar](500) NOT NULL,
CONSTRAINT [PK_BookReview] PRIMARY KEY CLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Book](
[Id] [int] IDENTITY(1,1) NOT NULL,
[Name] [nvarchar](10) NOT NULL,
CONSTRAINT [PK_Book] PRIMARY KEY CLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
SET IDENTITY_INSERT [dbo].[Book] ON
INSERT [dbo].[Book] ([Id], [Name]) VALUES (6, N'C#本质论1')
INSERT [dbo].[Book] ([Id], [Name]) VALUES (9, N'C#本质论4')
SET IDENTITY_INSERT [dbo].[Book] OFF */
}

  

Dapper-据说stackoverflow使用的orm的更多相关文章

  1. Aoite 系列(01) - 比 Dapper 更好用的 ORM

    Aoite 是一个适于任何 .Net Framework 4.0+ 项目的快速开发整体解决方案.Aoite.Data 适用于市面上大多数的数据库提供程序,通过统一封装,可以在日常开发中简单便捷的操作数 ...

  2. 利用Dapper ORM搭建三层架构

    利用Dapper关系对象映射器写的简单的三层架构.Dapper:StackOverFlow在使用的一个微型的ORM,框架整体效率较高,轻量级的ORM框架.网上有较多的扩展.此处只是简单的调用Dappe ...

  3. 用事实说话,成熟的ORM性能不是瓶颈,灵活性不是问题:EF5.0、PDF.NET5.0、Dapper原理分析与测试手记

    [本文篇幅较长,可以通过目录查看您感兴趣的内容,或者下载格式良好的PDF版本文件查看] 目录 一.ORM的"三国志"    2 1,PDF.NET诞生历程    2 2,Linq2 ...

  4. (转)用事实说话,成熟的ORM性能不是瓶颈,灵活性不是问题:EF5.0、PDF.NET5.0、Dapper原理分析与测试手记

    原文地址:http://www.cnblogs.com/bluedoctor/p/3378683.html [本文篇幅较长,可以通过目录查看您感兴趣的内容,或者下载格式良好的PDF版本文件查看] 目录 ...

  5. Dapper.NET——轻量ORM

    Dapper.NET使用 http://www.cnblogs.com/yankliu-vip/p/4182892.html 本文目录 Dapper.NET使用 1.为什么选择Dapper 2.以Da ...

  6. ORM系列之三:Dapper

    目录 1.Dapper 简介 2.Dapper 安装 3.Dapper 使用 Dapper简介 Dapper是一个轻量级的ORM框架,短小精悍,正如其名.对于小项目,使用EF,NHibernate这样 ...

  7. 轻型的ORM类Dapper

    Dapper是一个轻型的ORM类.代码就一个SqlMapper.cs文件,主要是IDbConnection的扩展方法,编译后就40K的一个很小的dll.官方站点http://code.google.c ...

  8. Dapper小型ORM的使用(随便吐槽下公司)

    近来公司又有新项目要做,之前做项目用过蛮多ORM,包括ef,NetTiers,ServiceStack.OrmLite等ROM,每种ORM都有一定的坑(或者说是使用者的问题吧~~).用来用去都觉的有一 ...

  9. Dapper ORM 用法—Net下无敌的ORM(转)

    假如你喜欢原生的Sql语句,又喜欢ORM的简单,那你一定会喜欢上Dapper这款ROM.点击下载Dapper的优势:1,Dapper是一个轻型的ORM类.代码就一个SqlMapper.cs文件,编译后 ...

随机推荐

  1. ASP.NET MVC5+EF6+EasyUI 后台管理系统(70)-微信公众平台开发-成为开发者

    系列目录 前言: 一.阅读这段系列之前,你必须花半天时间大致阅读微信公众平台的API文档,我尽量以简短快速的语言与大家分享一个过程 二.借助微信公众平台SDK Senparc.Weixin for C ...

  2. 设计模式之创建类模式大PK

                                        创建类模式大PK 创建类模式包括工厂方法模式.建造者模式.抽象工厂模式.单例模式和原型模式,他们能够提供对象的创建和管理职责.其 ...

  3. 《LoadRunner12七天速成宝典》签售会2016-12-17北京

    报名地址: http://www.after615.com/actives/s?id=3141&time=1480042829608&sign=9ac8e25e9ab3cf57f613 ...

  4. 一行代码实现java list去重

    1.不带类型写法: 1 List listWithoutDup = new ArrayList(new HashSet(listWithDup)); 2.带类型写法(以String类型为例):1)Ja ...

  5. Git(1)

    安装Git 完毕 (在开始菜单打开的话,打开的不是你想要的路径,切换路径很麻烦) 1.D盘新建 GitTest 文件夹 2.打开GitTest , 在空白的地方右键, 3.单击 Git Bash He ...

  6. ECharts数据图表系统? 5分钟上手!

    目录: 前言 简介 方法一:模块化单文件引入(推荐) 方法二:标签式单文件引入 [前言] 最近在捣鼓各种插件各种框架,发现这个ECharts还是比较不错的,文档也挺全的,还是中文的,给大家推荐一下. ...

  7. Android快乐贪吃蛇游戏实战项目开发教程-06虚拟方向键(五)绘制方向键箭头

    本系列教程概述与目录:http://www.cnblogs.com/chengyujia/p/5787111.html本系列教程项目源码GitHub地址:https://github.com/jack ...

  8. CYQ.Data V5 从入门到放弃ORM系列:教程 - MAction类使用

    背景: 随着V5框架使用者的快速增加,终于促使我开始对整个框架编写完整的Demo. 上周大概花了一星期的时间,每天写到夜里3点半,终完成了框架所有功能的Demo. 同时,按V5框架名称空间的顺序,对每 ...

  9. ASP.NET 5 Beta 7 版本

    在 VS2015 发布的同时,微软也发布了 ASP.NET 5 的路线图(详见ASP.NET 5 Schedule and Roadmap : https://github.com/aspnet/ho ...

  10. MyBatis5:MyBatis集成Spring事物管理(上篇)

    前言 有些日子没写博客了,主要原因一个是工作,另一个就是健身,因为我们不仅需要努力工作,也需要有健康的身体嘛. 那有看LZ博客的网友朋友们放心,LZ博客还是会继续保持更新,只是最近两三个月LZ写博客相 ...