Asp.net Core 3.1 引用ORM工具包 yrjw.ORM.Chimp(EF + dapper + Autofac)使用教程
yrjw.ORM.Chimp
介绍
It is not the encapsulation of ORM,a based on EF + dapper + Autofac, is repository and unitofwork
安装教程
程序包管理器控制台,使用 NuGet命令安装。 PM> Install-Package yrjw.ORM.Chimp
或者直接在项目文件.csproj中引入包
使用说明
- 创建实体对象,继承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; }
}
- 创建上下文,继承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(); //种子数据
}
}
- 添加扩展方法,初始化种子数据。
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=""}
);
}
}
- 创建仓储接口和实现类,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);
}
}
- 添加控制器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();
}
}
- 最关键一步,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)使用教程的更多相关文章
- 【无私分享:ASP.NET CORE 项目实战(第二章)】添加EF上下文对象,添加接口、实现类以及无处不在的依赖注入(DI)
目录索引 [无私分享:ASP.NET CORE 项目实战]目录索引 简介 上一章,我们介绍了安装和新建控制器.视图,这一章我们来创建个数据模型,并且添加接口和实现类. 添加EF上下文对象 按照我们以前 ...
- ASP.NET Core 2.2 基础知识(六) 配置(内含MySql+EF)
先上一段代码,了解一下 .NET Core 配置数据的结构. 新建一个 控制台项目,添加一个文件 json.json ,文件内容如下: { "country": "cn& ...
- 体验 ASP.NET Core 集成测试三剑客:xUnit.net、TestServer、EF Core InMemory
这是昨天解决的一个问题,针对一个 web api 的客户端代理类写集成测试,既要测试 web api,又要测试 web api 客户端. 测试 web api,就要在运行测试时自动启动 web api ...
- Asp.Net Core 进阶(三)—— IServiceCollection依赖注入容器和使用Autofac替换它
Asp.Net Core 提供了默认的依赖注入容器 IServiceCollection,它是一个轻量级的依赖注入容器,所以功能不多,只是提供了基础的一些功能,要实现AOP就有点麻烦,因此在实际工作当 ...
- asp.net core 3.1 引用的元包dll版本兼容性问题解决方案
自从.netcore 3.1出来后,大家都想立马升级到最新版本.我也是如此,微软也对.netcore 3.1的官方组件不断升级,几乎每隔几天就会有部分元包可以升级.每次打开Nuget包管理器,“更新” ...
- 使用Asp.Net Core MVC 开发项目实践[第四篇:基于EF Core的扩展2]
上篇我们说到了基于EFCore的基础扩展,这篇我们讲解下基于实体结合拉姆达表达式的自定义更新以及删除数据. 先说下原理:其实通过实体以及拉姆达表达式生成SQL语句去执行 第一种更新扩展: 自定义更新字 ...
- 使用Asp.Net Core MVC 开发项目实践[第三篇:基于EF Core的扩展]
上篇我们说到了EFCore的基础使用,这篇我们将讲解下基于EFCore的扩展. 我们在Mango.Framework.EFCore类库项目中创建一个类名EFExtended的扩展类,并且引入相关的命名 ...
- ASP.NET Core 2.2 WebApi 系列【二】使用EF CodeFirst创建数据库
Code First模式 Code First是指"代码优先"或"代码先行". Code First模式将会基于编写的类和配置,自动创建模型和数据库. 一.准备 ...
- 如何使用ASP.NET Core、EF Core、ABP(ASP.NET Boilerplate)创建分层的Web应用程序(第一部分)
本文是为了学习ABP的使用,是翻译ABP官方文档的一篇实战教程,我暂时是优先翻译自己感兴趣或者比较想学习的部分,后续有时间希望能将ABP系列翻译出来,除了自己能学习外,有可能的话希望帮助一些英文阅读能 ...
随机推荐
- Problem H: 质心算法
Description 在很多应用中,需要对某个目标进行定位.比如对于一个未知坐标的点A,假定已知A点与N个点相邻,且已知N个相邻点的坐标,则可取N个点的质心作为A点坐标的一个估计值. 所谓质心,就是 ...
- PHP操作Redis步骤详解
一.Redis连接与认证 $redis = new Redis(); //连接参数:ip.端口.连接超时时间,连接成功返回true,否则返回false $ret = $redis->connec ...
- WSGI应用程序示例
import time # WSGI允许开发者自由搭配web框架和web服务器 def app(environ,start_response): status = '200 OK' response_ ...
- PHP 是什么?简介下
PHP 是服务器端脚本语言. 您应当具备的基础知识 在继续学习之前,您需要对以下知识有基本的了解: HTML CSS PHP 是什么? PHP(全称:PHP:Hypertext Preprocesso ...
- PHP imagecolorallocatealpha - 为一幅图像分配颜色和透明度
imagecolorallocatealpha — 为一幅图像分配颜色和透明度.高佣联盟 www.cgewang.com 语法 int imagecolorallocatealpha ( resour ...
- 5.13 省选模拟赛 优雅的绽放吧,墨染樱花 多项式 prufer序列 计数 dp
LINK:优雅的绽放吧,墨染樱花 当时考完只会50分的做法 最近做了某道题受到启发 故会做这道题目了.(末尾附30分 50分 100分code 看到度数容易想到prufer序列 考虑dp统计方案数. ...
- centos7与centos6命令差异
技术群: 816227112 查看ip centos6 : ifconfigcentos7 : ip addr 修改hostname centos6 : 修改/etc/sysconfig/networ ...
- Vue通过Blob对象实现导出Excel功能
不同的项目有不同的导出需求,有些只导出当前所显示结果页面的表格进入excel,这个时候就有很多插件,比如vue-json-excel或者是Blob.js+Export2Excel.js来实现导出Exc ...
- Java语言特性
Java的语言特性: 1.语法相对简单 2.面向对象 3.分布性 4.可移植性 5.安全性 6.健壮性 7.解释性 8.多线程 9.动态性与并发性 Java中的面向对象编程: 面向对象程序设计(Obj ...
- 【av68676164(p41-p42)】内存管理功能
存储器的功能需求 容量足够大 速度足够快 信息永久保存 多道程序并行 多道程序并行带来的问题 共享:代码和数据共享,节省内存 保护:不允许内存中的程序相互间非法访问 实际存储器体系 三级存储体系 Ca ...