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系列翻译出来,除了自己能学习外,有可能的话希望帮助一些英文阅读能 ...
随机推荐
- Mysql Backup
1.完全备份# innobackupex --user=DBUSER --password=DBUSERPASS /path/to/BACKUP-DIR/如果要使用一个最小权限的用户进行备份,则可基于 ...
- Windows下使用图形化mount挂载磁盘到文件夹
Windows上也有类似于Linux上的mount命令,至于mount是什么: mount是Linux下的一个命令,它可以将分区挂接到Linux的一个文件夹下,从而将分区和该目录联系起来,因此我们只要 ...
- 第三章 Java面向对象(下)
3.1.抽象类 概述:在做子类共性功能抽取时,有些方法在父类中并没有具体的体现,这个时候就需要抽象类了 格式:public abstract class 类名 {} 语法特点: 抽象类和抽象方法必须使 ...
- Day15_阿里短信
学于黑马和传智播客联合做的教学项目 感谢 黑马官网 传智播客官网 微信搜索"艺术行者",关注并回复关键词"乐优商城"获取视频和教程资料! b站在线视频 1.开通 ...
- python爬虫基础要学什么,有哪些适合新手的书籍与教程?
一,爬虫基础: 首先我们应该了解爬虫是个什么东西,而不是直接去学习带有代码的内容,新手小白应该花一个小时去了解爬虫是什么,再去学习带有代码的知识,这样所带来的收获是一定比你直接去学习代码内容要多很多很 ...
- html中input提示文字样式修改
在很多网站上我们都看到input输入框显示提示文字,让我们一起来看看如果在input输入框中显示提示文字.我们只需要在<input>标签里添加:placeholder="提示文字 ...
- 如何在 UltraEdit 删除空行(含空格,制表符)
如何在 UltraEdit 删除空行(含空格,制表符) 打开UltraEdit,ctrl+r弹出替换对话框,点选启用正则表达式方法1:在查找框输入 ^p^p:在替换框输入 ^p执行全部替换:这种方法是 ...
- python基础day6_字典dict
数据类型划分:可变数据类型.不可变数据类型 不可变数据类型(又叫可哈希):元祖,bool ,int,str, 可变数据类型(又叫不可哈希):list,dict,set(集合) dict的key必须是不 ...
- PHP gmstrftime() 函数
------------恢复内容开始------------ 实例 根据区域设置格式化 GMT/UTC 日期和时间: <?phpecho(gmstrftime("%B %d %Y, % ...
- PHP atan() 函数
实例 通过 atan() 函数返回不同数的反正切: <?phpecho(atan(0.50) . "<br>");echo(atan(-0.50) . " ...