yrjw.ORM.Chimp

介绍

It is not the encapsulation of ORM,a based on EF + dapper + Autofac, is repository and unitofwork

安装教程

  1. 程序包管理器控制台,使用 NuGet命令安装。 PM> Install-Package yrjw.ORM.Chimp

  2. 或者直接在项目文件.csproj中引入包

使用说明

  1. 创建实体对象,继承IEntity
    /// <summary>
/// 学生信息表
/// </summary>
[Table("StudentInfo")]
public class StudentInfo: IEntity
{
[Key]
public virtual int Id { get; set; }
/// <summary>
/// 学生姓名
/// </summary>
[Required]
[Column(TypeName = "varchar(50)")]
public string Name { get; set; }
/// <summary>
/// 性别
/// </summary>
public int Sex { get; set; }
/// <summary>
/// 民族
/// </summary>
public int NationId { get; set; }
/// <summary>
/// 电话
/// </summary>
public string Phone { get; set; }
}
  1. 创建上下文,继承BaseDbContext,使用base.OnModelCreating(),无需添加DbSet
    public class myDbContext: BaseDbContext
{
public myDbContext()
{
} public myDbContext(DbContextOptions options) : base(options)
{
} protected override void OnModelCreating(ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Seed(); //种子数据
}
}
  1. 添加扩展方法,初始化种子数据。
    public static class ModelBuilderExtensions
{
/// <summary>
/// 种子数据
/// </summary>
/// <param name="modelBuilder"></param>
public static void Seed(this ModelBuilder modelBuilder)
{
modelBuilder.Entity<StudentInfo>().HasData(
new StudentInfo { Id = , Name = "张三", Sex = , NationId = , Phone=""}
);
}
}
  1. 创建仓储接口和实现类,service继承IDependency接口,可支持通过属性依赖注入方式(使用Autofac依赖注入)。
    public interface IStudentInfoService
{
IUnitOfWork UnitOfWork { get; } Task<IResultModel> QueryList();
}
    public class StudentInfoService: IStudentInfoService, IDependency
{
private readonly Lazy<IMapper> _mapper;
private readonly Lazy<IRepository<StudentInfo>> repStudentInfo; public IUnitOfWork UnitOfWork { get; } public StudentInfoService(Lazy<IMapper> mapper, IUnitOfWork unitOfWork, Lazy<IRepository<StudentInfo>> repStudentInfo)
{
this._mapper = mapper;
this.UnitOfWork = unitOfWork;
this.repStudentInfo = repStudentInfo;
} public async Task<IResultModel> QueryList()
{
var list = await repStudentInfo.Value.TableNoTracking.ProjectTo<StudentInfoDTO>(_mapper.Value.ConfigurationProvider).ToListAsync();
return ResultModel.Success<IList<StudentInfoDTO>>(list);
}
}
  1. 添加控制器Controller
    [Description("学生信息")]
[Route("api/[controller]/[action]")]
public class StudentInfoController : ControllerBase
{
private readonly ILogger<StudentInfoController> _logger; public Lazy<IStudentInfoService> StudentInfoService { get; set; } public StudentInfoController(ILogger<StudentInfoController> logger)
{
_logger = logger;
} [Description("获取学生列表")]
[ResponseCache(Duration = )]
[HttpGet]
public Task<IResultModel> QueryList()
{
return StudentInfoService.Value.QueryList();
}
}
  1. 最关键一步,Startup.cs中注入服务,setting.AssemblyName为当前运行的api程序集命名空间。
    public virtual void ConfigureServices(IServiceCollection services)
{
if (setting.DbType == yrjw.ORM.Chimp.DbType.MYSQL)
{
services.AddChimp<myDbContext>(opt => opt.UseMySql(setting.ConnectionString,
b => b.MigrationsAssembly(setting.AssemblyName)));
}
else
{
services.AddChimp<myDbContext>(opt => opt.UseSqlServer(setting.ConnectionString,
b => b.MigrationsAssembly(setting.AssemblyName)));
}
}

详细使用说明

使用说明

关于Chimp

在Leo.Chimp包基础上添加了Autofac依赖注入,封装返回接口模型IResultModel,支持.net core 3.1版本上使用。

Asp.net Core 3.1 引用ORM工具包 yrjw.ORM.Chimp(EF + dapper + Autofac)使用教程的更多相关文章

  1. 【无私分享:ASP.NET CORE 项目实战(第二章)】添加EF上下文对象,添加接口、实现类以及无处不在的依赖注入(DI)

    目录索引 [无私分享:ASP.NET CORE 项目实战]目录索引 简介 上一章,我们介绍了安装和新建控制器.视图,这一章我们来创建个数据模型,并且添加接口和实现类. 添加EF上下文对象 按照我们以前 ...

  2. ASP.NET Core 2.2 基础知识(六) 配置(内含MySql+EF)

    先上一段代码,了解一下 .NET Core 配置数据的结构. 新建一个 控制台项目,添加一个文件 json.json ,文件内容如下: { "country": "cn& ...

  3. 体验 ASP.NET Core 集成测试三剑客:xUnit.net、TestServer、EF Core InMemory

    这是昨天解决的一个问题,针对一个 web api 的客户端代理类写集成测试,既要测试 web api,又要测试 web api 客户端. 测试 web api,就要在运行测试时自动启动 web api ...

  4. Asp.Net Core 进阶(三)—— IServiceCollection依赖注入容器和使用Autofac替换它

    Asp.Net Core 提供了默认的依赖注入容器 IServiceCollection,它是一个轻量级的依赖注入容器,所以功能不多,只是提供了基础的一些功能,要实现AOP就有点麻烦,因此在实际工作当 ...

  5. asp.net core 3.1 引用的元包dll版本兼容性问题解决方案

    自从.netcore 3.1出来后,大家都想立马升级到最新版本.我也是如此,微软也对.netcore 3.1的官方组件不断升级,几乎每隔几天就会有部分元包可以升级.每次打开Nuget包管理器,“更新” ...

  6. 使用Asp.Net Core MVC 开发项目实践[第四篇:基于EF Core的扩展2]

    上篇我们说到了基于EFCore的基础扩展,这篇我们讲解下基于实体结合拉姆达表达式的自定义更新以及删除数据. 先说下原理:其实通过实体以及拉姆达表达式生成SQL语句去执行 第一种更新扩展: 自定义更新字 ...

  7. 使用Asp.Net Core MVC 开发项目实践[第三篇:基于EF Core的扩展]

    上篇我们说到了EFCore的基础使用,这篇我们将讲解下基于EFCore的扩展. 我们在Mango.Framework.EFCore类库项目中创建一个类名EFExtended的扩展类,并且引入相关的命名 ...

  8. ASP.NET Core 2.2 WebApi 系列【二】使用EF CodeFirst创建数据库

    Code First模式 Code First是指"代码优先"或"代码先行". Code First模式将会基于编写的类和配置,自动创建模型和数据库. 一.准备 ...

  9. 如何使用ASP.NET Core、EF Core、ABP(ASP.NET Boilerplate)创建分层的Web应用程序(第一部分)

    本文是为了学习ABP的使用,是翻译ABP官方文档的一篇实战教程,我暂时是优先翻译自己感兴趣或者比较想学习的部分,后续有时间希望能将ABP系列翻译出来,除了自己能学习外,有可能的话希望帮助一些英文阅读能 ...

随机推荐

  1. 2.pandas的数据结构

    对于文件来说,读取只是最初级的要求,那我们要对文件进行数据分析,首先就应该要知道,pandas会将我们熟悉的文件转换成了什么形式的数据结构,以便于后续的操作 数据结构 pandas对文件一共有两种数据 ...

  2. Java环境变量设置:Path、CLASSPATH、JAVA_HOME的作用分别是什么?

    1.Path 作用是指定命令搜索路径,在i命令行下面执行命令如javac编译java程序时,它会到PATH变量所指定的路径中查找百看是否能找到相应的命令程序.        需要把jdk安装目录下的b ...

  3. Java-旋转字符串

    描述 旋转字符串 给定一个字符串(以字符数组的形式给出)和一个偏移量,根据偏移量原地旋转字符串(从左向右旋转). 挑战 在数组上原地旋转,使用O(1)的额外空间 说明 原地旋转意味着你要在s本身进行修 ...

  4. Python三角函数

    Python三角函数: 函数: ''' math.sin(x) 返回的x弧度的正弦值. math.asin(x) 返回x的反正弦弧度值. math.cos(x) 返回x的弧度的余弦值. math.ac ...

  5. PHP fileperms() 函数

    定义和用法 fileperms() 函数返回文件或目录的权限. 如果成功,该函数以数字形式返回权限.如果失败,则返回 FALSE. 语法 fileperms(filename) 参数 描述 filen ...

  6. Hibernate Validator校验参数全攻略

    1. 前言 数据字段一般都要遵循业务要求和数据库设计,所以后端的参数校验是必须的,应用程序必须通过某种手段来确保输入进来的数据从语义上来讲是正确的. 2. 数据校验的痛点 为了保证数据语义的正确,我们 ...

  7. windows:shellcode 远程线程hook/注入(一)

    https://www.cnblogs.com/theseventhson/p/13199381.html 上次分享了通过APC注入方式,让目标线程运行shellcode.这么做有个前提条件:目标线程 ...

  8. ThreadLocal面试六连问

    转自:码农沉思录 中高级阶段开发者出去面试,应该躲不开ThreadLocal相关问题,本文就常见问题做出一些解答,欢迎留言探讨. ThreadLocal为Java并发提供了一个新的思路, 它用来存储T ...

  9. 笨办法学python3练习代码13-14:argv参数变量的学习

    ex13.py  argv参数的学习 #argv:参数变量(argument variable),这是一个标准的编程术语,在其他语言中也可可以看到.argument可译为: 参数 #如果参数是用户在执 ...

  10. Springboot 在@Configuration注解的勒种 使用@Autowired或者@value注解 读取.yml属性失败

    springboot中@value注解,读取yml属性失败 问题场景: 配置ShrioConfig时,想注入.yml的参数进行配置 解决办法: 如果注释掉shiroEhcacheManager 以下所 ...