EFRepository

Build status Code Coverage Technical Debt NuGet NuGet Pre Release

Generic repository and pattern "Unit of work" for Entity framework

Read more samples...

Requirements

Features

Quick Start

  1. Install nuget package

    Install-Package KirkChen.EFRepository
  2. Create data class with interface IEntity

    public class MyData : IEntity<int>
    {        
        [Key]
        public int Id { get; set; }
    
        public string Content { get; set; }
    }
  3. Create dbContext

    public class MyDbContext: DbContext
    {
        public DbSet<MyData> MyDatas { get; set; }
    }
  4. Create repository for data class

    public class MyDataRepository : GenericRepository<int, MyData>, IRepository<int, MyData>
    {
        public MyDataRepository(MyDbContext context)
            : base(context)
        {
            // Enable soft delete
            this.RegisterPostLoadHook(new SoftDeletePostLoadHook<MyData>());
            this.RegisterPostActionHook(new SoftDeletePostActionHook<MyData>());
        }
    }
  5. Use reository

    var dbContext = new MyDbContext();
    var repository = new MyDataRepository(dbContext);
    var myData = repository.Get(1);

Unit of work

Using unit of work to handle transaction

using(var dbContext = new MyDbContext())
using(var unitOfWork = new UnitOfWork(dbContext))
{
    var repository = new MyDataRepository(dbContext);
    repository.Add(data);

    var anotherRepository = new OtherDataRepository(dbContext);
    repository.Add(anotherdata);

    unitOfWork.SaveChanges();
}

Roadmap