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 connection is closed. The full list of extension methods in Dapper.Contrib right now are:
T Get<T>(id);
IEnumerable<T> GetAll<T>();
int Insert<T>(T obj);
int Insert<T>(Enumerable<T> list);
bool Update<T>(T obj);
bool Update<T>(Enumerable<T> list);
bool Delete<T>(T obj);
bool Delete<T>(Enumerable<T> list);
bool DeleteAll<T>();
For these extensions to work, the entity in question MUST have a key-property, a property named "id" or decorated with a [Key] attribute.
public class Car
{
public int Id { get; set; }
public string Name { get; set; }
}
public class User
{
[Key]
int TheId { get; set; }
string Name { get; set; }
int Age { get; set; }
}
Get one specific entity based on id
var car = connection.Get<Car>(1);
or a list of all entities in the table.
var cars = connection.GetAll<Car>();
Insert one entity
connection.Insert(new Car { Name = "Volvo" });
or a list of entities.
connection.Insert(cars);
Update one specific entity
connection.Update(new Car() { Id = 1, Name = "Saab" });
or update a list of entities.
connection.Update(cars);
Delete one specific entity
connection.Delete(new Car() { Id = 1 });
a list of entities
connection.Delete(cars);
or ALL entities in the table.
connection.DeleteAll<Car>();
Dapper.Contrib makes use of some optional attributes:
- Table("Tablename") - use another table name instead of the name of the class
[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