Dapper.Contrib contains a number of helper methods for inserting, getting, updating and deleting files.
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 an entity by the specified [Key] property
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
SQLiteConnection exposes an Update event that clashes with the Update
extension provided by Dapper.Contrib. There are 2 ways to deal with this.
-
Call the
Updatemethod explicitly fromSqlMapperExtensionsSqlMapperExtensions.Update(_conn, new Employee { Id = 1, Name = "Mercedes" });
-
Make the method signature unique by passing a type parameter to
Updateconnection.Update<Car>(new Car() { Id = 1, Name = "Maruti" });