| [PetaPoco](http://www.toptensoftware.com/petapoco/) | 52ms | [Can be faster](http://web.archive.org/web/20170921124755/http://www.toptensoftware.com/blog/posts/94-PetaPoco-More-Speed) |
| [PetaPoco](https://github.com/CollaboratingPlatypus/PetaPoco) | 52ms | [Can be faster](https://web.archive.org/web/20170921124755/http://www.toptensoftware.com/blog/posts/94-PetaPoco-More-Speed) |
| BLToolkit | 80ms |
| BLToolkit | 80ms |
| SubSonic CodingHorror | 107ms |
| SubSonic CodingHorror | 107ms |
| NHibernate SQL | 104ms |
| NHibernate SQL | 104ms |
...
@@ -153,7 +166,7 @@ Parameterized queries
...
@@ -153,7 +166,7 @@ Parameterized queries
Parameters are passed in as anonymous classes. This allow you to name your parameters easily and gives you the ability to simply cut-and-paste SQL snippets and run them in your db platform's Query analyzer.
Parameters are passed in as anonymous classes. This allow you to name your parameters easily and gives you the ability to simply cut-and-paste SQL snippets and run them in your db platform's Query analyzer.
```csharp
```csharp
new{A=1,B="b"}// A will be mapped to the param @A, B to the param @B
new{A=1,B="b"}// A will be mapped to the param @A, B to the param @B
```
```
List Support
List Support
...
@@ -215,7 +228,7 @@ class User
...
@@ -215,7 +228,7 @@ class User
Now let us say that we want to map a query that joins both the posts and the users table. Until now if we needed to combine the result of 2 queries, we'd need a new object to express it but it makes more sense in this case to put the `User` object inside the `Post` object.
Now let us say that we want to map a query that joins both the posts and the users table. Until now if we needed to combine the result of 2 queries, we'd need a new object to express it but it makes more sense in this case to put the `User` object inside the `Post` object.
This is the user case for multi mapping. You tell dapper that the query returns a `Post` and a `User` object and then give it a function describing what you want to do with each of the rows containing both a `Post` and a `User` object. In our case, we want to take the user object and put it inside the post object. So we write the function:
This is the user case for multi mapping. You tell dapper that the query returns a `Post` and a `User` object and then give it a function describing what you want to do with each of the rows containing both a `Post` and a `User` object. In our case, we want to take the user object and put it inside the post object. So we write the function:
```csharp
```csharp
(post,user)=>{post.Owner=user;returnpost;}
(post,user)=>{post.Owner=user;returnpost;}
...
@@ -230,11 +243,11 @@ The 3 type arguments to the `Query` method specify what objects dapper should us
...
@@ -230,11 +243,11 @@ The 3 type arguments to the `Query` method specify what objects dapper should us