Dapper.NET Tutorial

From WikiOD

Dapper is a micro-ORM for .Net that extends your IDbConnection, simplifying query setup, execution, and result-reading.

How do I get it?[edit | edit source]

Common Tasks[edit | edit source]

Versions[edit | edit source]

Version Notes Release Date
1.50.0 core-clr / asp.net 5.0 build against RTM 2016-06-29
1.42.0 2015-05-06
1.40.0 2015-04-03
1.30.0 2014-08-14
1.20.0 2014-05-08
1.10.0 2012-06-27
1.0.0 2011-04-14

Install Dapper from Nuget[edit | edit source]

Either search in the Visual Studio GUI:

Tools > NuGet Package Manager > Manage Packages for Solution... (Visual Studio 2015)

screenshot of the Visual Studio package manager interface with Dapper being selected

Or run this command in a Nuget Power Shell instance to install the latest stable version

Install*Package Dapper

Or for a specific version

Install*Package Dapper -Version 1.42.0

Using Dapper in C#[edit | edit source]

using System.Data;
using System.Linq;
using Dapper;

class Program
    static void Main()
        using (IDbConnection db = new SqlConnection("Server=myServer;Trusted_Connection=true"))
            var result = db.Query<string>("SELECT 'Hello World'").Single();

Wrapping the connection in a Using block will close the connection

Using Dapper in LINQPad[edit | edit source]

LINQPad is great for testing database queries and includes NuGet integration. To use Dapper in LINQPad press F4 to open the Query Properties and then select Add NuGet. Search for dapper dot net and select Add To Query. You will also want to click Add namespaces and highlight Dapper to include the Extension Methods in your LINQPad query.

Once Dapper is enabled you can change the Language drop down to C# Program, map query results to C# classes, and use the .Dump() method to inspect the results:

void Main()
    using (IDbConnection db = new SqlConnection("Server=myServer;Trusted_Connection=true")){
        var scalar = db.Query<string>("SELECT GETDATE()").SingleOrDefault();
        scalar.Dump("This is a string scalar result:");

        var results = db.Query<myobject>(@"
        SELECT * FROM (
        VALUES (1,'one'),
        ) AS mytable(id,name)");
        results.Dump("This is a table mapped to a class:");

// Define other methods and classes here
class myobject {
    public int id { get; set; }
    public string name { get; set; }

The results when executing the program would look like this:

LINQPad screenshot