Commit a104524e authored by johandanforth's avatar johandanforth
parents 984055aa afe6ce10
...@@ -3,10 +3,10 @@ Dapper.Contrib - more extensions for dapper ...@@ -3,10 +3,10 @@ Dapper.Contrib - more extensions for dapper
Features Features
-------- --------
Dapper.Contrib contains a number of helper methods for inserting, getting, updating and deleting files. Dapper.Contrib contains a number of helper methods for inserting, getting,
updating and deleting files.
As with dapper, all extension methods assume the connection is already open, they will fail if the The full list of extension methods in Dapper.Contrib right now are:
connection is closed. The full list of extension methods in Dapper.Contrib right now are:
```csharp ```csharp
T Get<T>(id); T Get<T>(id);
...@@ -20,8 +20,8 @@ bool Delete<T>(Enumerable<T> list); ...@@ -20,8 +20,8 @@ bool Delete<T>(Enumerable<T> list);
bool DeleteAll<T>(); bool DeleteAll<T>();
``` ```
For these extensions to work, the entity in question _MUST_ have a key-property, a property named "id" or decorated with For these extensions to work, the entity in question _MUST_ have a
a [Key] attribute. key-property, a property named "`id`" or decorated with a `[Key]` attribute.
```csharp ```csharp
public class Car public class Car
...@@ -37,51 +37,71 @@ public class User ...@@ -37,51 +37,71 @@ public class User
string Name { get; set; } string Name { get; set; }
int Age { get; set; } int Age { get; set; }
} }
``` ```
`Get` methods
Gets
------- -------
Get one specific entity based on id, or a list of all entities in the table.
Get one specific entity based on id
```csharp ```csharp
var car = connection.Get<Car>(1); var car = connection.Get<Car>(1);
```
or a list of all entities in the table.
```csharp
var cars = connection.GetAll<Car>(); var cars = connection.GetAll<Car>();
``` ```
Inserts `Insert` methods
------- -------
Insert one entity or a list of entities.
Insert one entity
```csharp ```csharp
connection.Insert(new Car { Name = "Volvo" }); connection.Insert(new Car { Name = "Volvo" });
```
or a list of entities.
```csharp
connection.Insert(cars); connection.Insert(cars);
``` ```
Updates `Update` methods
------- -------
Update one specific entity or update a list of entities. Update one specific entity
```csharp ```csharp
connection.Update(new Car() { Id = 1, Name = "Saab" }); connection.Update(new Car() { Id = 1, Name = "Saab" });
```
or update a list of entities.
```csharp
connection.Update(cars); connection.Update(cars);
``` ```
Deletes `Delete` methods
------- -------
Delete one specific entity, a list of entities, or _ALL_ entities in the table. Delete an entity by the specified `[Key]` property
```csharp ```csharp
connection.Delete(new Car() { Id = 1 }); connection.Delete(new Car() { Id = 1 });
```
a list of entities
```csharp
connection.Delete(cars); connection.Delete(cars);
```
or _ALL_ entities in the table.
```csharp
connection.DeleteAll<Car>(); connection.DeleteAll<Car>();
``` ```
...@@ -89,8 +109,35 @@ Special Attributes ...@@ -89,8 +109,35 @@ Special Attributes
---------- ----------
Dapper.Contrib makes use of some optional attributes: Dapper.Contrib makes use of some optional attributes:
* Table("Tablename") - use another table name instead of the name of the class * `[Table("Tablename")]` - use another table name instead of the name of the class
* Key - this property is the identity/key (unless it is named "Id")
* Write(true/false) - this property is (not) writeable ```csharp
* Computed - this property is computed and should not be part of updates [Table ("emps")]
public class Employee
{
public int Id { get; set; }
public string Name { get; set; }
}
```
* `[Key]` - this property is the identity/key (unless it is named "Id")
* `[Write(true/false)]` - this property is (not) writeable
* `[Computed]` - this property is computed and should not be part of updates
Limitations and caveats
-------
### SQLite
`SQLiteConnection` exposes an `Update` event that clashes with the `Update`
extension provided by Dapper.Contrib. There are 2 ways to deal with this.
1. Call the `Update` method explicitly from `SqlMapperExtensions`
```Csharp
SqlMapperExtensions.Update(_conn, new Employee { Id = 1, Name = "Mercedes" });
```
2. Make the method signature unique by passing a type parameter to `Update`
```Csharp
connection.Update<Car>(new Car() { Id = 1, Name = "Maruti" });
```
...@@ -305,7 +305,7 @@ Dapper supports fully stored procs: ...@@ -305,7 +305,7 @@ Dapper supports fully stored procs:
```csharp ```csharp
var user = cnn.Query<User>("spGetUser", new {Id = 1}, var user = cnn.Query<User>("spGetUser", new {Id = 1},
commandType: CommandType.StoredProcedure).First();}}} commandType: CommandType.StoredProcedure).SingleOrDefault();
``` ```
If you want something more fancy, you can do: If you want something more fancy, you can do:
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment