Skip to content

DapperのCRUDを簡単に使える拡張ライブラリ

Notifications You must be signed in to change notification settings

ikuosaito1989/DapperSlackOff

Repository files navigation

DapperSlackOff

DapperのCRUDを簡単に使える拡張ライブラリ

Usage

using Dapper;
services.AddSingleton<IDapperSlackOff> (_ =>
    new DapperSlackOff (string connectionString, string[] creatDateColumns, string[] updateDateColumn));
  • connectionString

接続文字列

  • creatDateColumns

自動で作成日を更新するカラム名

  • updateDateColumn

自動で更新日を更新するカラム名

Dependency Injection

public class Test {
        
    private IDapperSlackOff _repository;

    public Test (IDapperSlackOff repository) {
        _repository = repository;
    }
}

SELECT

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

条件あり(AND)

var person = _repository.Get<Person> (new { Id = 1, Age = 29 });

SQL

SELECT * FROM Person Where Id = 1 AND Age = 29

条件あり(OR)

var person = _repository.Get<Person> (new { Id = 1, Age = 29 }, false);

SQL

SELECT * FROM Person Where Id = 1 OR Age = 29

SELECT List

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")

Update

T Update<T> (object entity);

主キー更新

Person person = repository.Update<Person> (new { Id = 1, Name = "saito" });

SQL

UPDATE Person SET Name='saito' WHERE Id=1

Delete

int Delete<T> (object entity, bool conditions = true);

主キー削除

var deleteCount = repository.Delete<Person> (new { Id = 1 });

SQL

DELETE FROM Person WHERE Id=1

Insert

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')

CreateOrUpdate

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

About

DapperのCRUDを簡単に使える拡張ライブラリ

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages