# efcore-unitofwork-and-repository **Repository Path**: behavior/efcore-unitofwork-and-repository ## Basic Information - **Project Name**: efcore-unitofwork-and-repository - **Description**: efcore+dapper 混合仓储 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 2 - **Created**: 2021-04-08 - **Last Updated**: 2021-04-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # pluto-efcore-general-repository ### 注入UOW ```csharp services.AddUnitOfWorkDbContext(opt => { opt.UseSqlServer( "Server =.;Database = PlutoDataDemo;User ID = sa;Password = 123456;Trusted_Connection = False;"); opt.UseLoggerFactory(new LoggerFactory(new[] { new EFLoggerProvider() })); }); // 支持注入多个 ``` ### 仓储 1. 基本仓储 ```csharp // 基本仓储unitofwork中已有,直接使用TEntity // IRepository // 使用 uow的GetBaseRepository即可 unitOfWork.GetBaseRepository(); ``` 2. 自定义仓储 ```csharp services.AddRepository(); // 默认使用程序集扫描注入仓储,可选,不使用这个的话,请自定使用services.AddScoped() // 自定义repository,需分别继承自IRepository。Repository // 使用unitOfWork.GetRepository(); public interface ICustomBlogRepository : IRepository { // ... } public class CustomBlogRepository : Repository, ICustomBlogRepository { // ... } ``` ### 获取仓储 1. 获取基本仓储(仅支持IRepository中的操作) ```csharp // unitOfWork.GetBaseRepository() public ctor(IUnitOfWork unitOfWork){ var baseRep = unitOfWork.GetBaseRepository(); } ``` 2. 获取自定义仓储(支持IRepository中的操作和自定义操作) ```csharp // unitOfWork.GetRepository() public ctor(IUnitOfWork unitOfWork){ var baseRep = unitOfWork.GetRepository(); } ``` 获取自定义仓储 ```csharp private readonly IUnitOfWork _unitOfWork; private readonly ICustomBlogRepository _customBlogRepository; public ValuesController(IUnitOfWork unitOfWork) { _unitOfWork = unitOfWork; _customBlogRepository = unitOfWork.GetRepository(); } ```