DapperのCRUDを簡単に使える拡張ライブラリ
using Dapper;
services.AddSingleton<IDapperSlackOff> (_ =>
new DapperSlackOff (string connectionString, string[] creatDateColumns, string[] updateDateColumn));
- connectionString
接続文字列
- creatDateColumns
自動で作成日を更新するカラム名
- updateDateColumn
自動で更新日を更新するカラム名
public class Test {
private IDapperSlackOff _repository;
public Test (IDapperSlackOff repository) {
_repository = repository;
}
}
IEnumerable<T> Get<T> (object entity = null, bool conditions = true);
public class Person
{
public int Id { get; set; }
public string Name { get; set; }
public int Age { get; set; }
}
var person = _repository.Get<Person> ();
SQL
SELECT * FROM Person
var person = _repository.Get<Person> (new { Id = 1, Age = 29 });
SQL
SELECT * FROM Person Where Id = 1 AND Age = 29
var person = _repository.Get<Person> (new { Id = 1, Age = 29 }, false);
SQL
SELECT * FROM Person Where Id = 1 OR Age = 29
public class Person
{
[Key]
public int Id { get; set; }
public string Name { get; set; }
public int Age { get; set; }
}
IEnumerable<T1> GetList<T1, T2> (object lists, string keyName = null)
- T1
戻り値の型
- T2
listsの型。IEnumerableの場合はint
var list = new int[] {1 ,2};
var people = _repository.GetList<Person, int> (list);
SQL
SELECT * FROM Person WHERE Id IN (1 ,2)
var names = new string[] {"saito" ,"ikeda"};
var people = _repository.GetList<Person, string> (list, nameof(Person.Name));
SQL
SELECT * FROM Person WHERE Name IN ("saito" ,"ikeda")
T Update<T> (object entity);
Person person = repository.Update<Person> (new { Id = 1, Name = "saito" });
SQL
UPDATE Person SET Name='saito' WHERE Id=1
int Delete<T> (object entity, bool conditions = true);
var deleteCount = repository.Delete<Person> (new { Id = 1 });
SQL
DELETE FROM Person WHERE Id=1
T Insert<T> (object entity);
Person person = repository.Insert<Person> (new { Name = "saito", Age = 29 });
INSERT INTO Person (Name,Age,CreateTime,UpdateTime) VALUES ('saito',29,{CurrentTime},'0000-00-00 00:00:00.000')
T CreateOrUpdate<T> (T entity);
エンティティに主キーが存在する場合、Insert
Person person = repository.CreateOrUpdate<Person> (new Person () { Id = 1, Name = "saito", Age = 29 });
INSERT INTO Person (Name,Age,CreateTime,UpdateTime) VALUES ('saito',29,{CurrentTime},'0000-00-00 00:00:00.000')
エンティティに主キーが存在しない場合、Update
Person person = repository.CreateOrUpdate<Person> (new Person () { Name = "saito", Age = 29 });
SQL
UPDATE Person SET Name='saito',Age=29,CreateTime='0000-00-00 00:00:00.000',UpdateTime={CurrentTime} WHERE Id=@Id