MySQL linq 分页,EFCore+Mysql仓储层建设(分页、多字段排序、部分字段更新)

前沿

园子里已有挺多博文介绍了EFCore+Mysql/MSSql如何进行使用,但实际开发不会把EF层放在Web层混合起来,需要多个项目配合结构清晰的进行分层工作,本文根据个人实践经验总结将各个项目进行分层,仅供想自己搭建,包含数据仓储以及分页多字段排序。

目录结构 1.实体层(EF)搭建 1.1添加Nuget包 1.2添加实体 1.3构造DbContext 1.4数据迁移生成数据库 2.仓储层搭建   2.1添加Nuget包   2.2添加必要的支持IEnumerable和IQueryable 的OrderBy字符串支持类LinqExtensions   2.3构造RepositoryBase   2.5添加工作单元UnitOfWork 3.WebApi项目测试   3.1注入EF   3.2测试 4.Github项目地址 正文 1.实体层(EF)搭建

新建.NetCore类库项目Entity,本人使用的是2.0的SDK

1.1添加Nuget包 PM> Install-Package Microsoft.AspNetCore.All -version 2.0.9 PM> Install-Package Pomelo.EntityFrameworkCore.MySql -version 2.0.1

eab7f4e74902a252ed6e0f7353db1297.png

1.2添加实体

父类EntityBase

ec45dd1bf781710dce5a299b573841dd.png

实体类SysUser

399d38974b29f63038649accb67255de.png

070704d0e7988dfb5daf6787ca1c47a1.png

1.3构造DbContext

7feef6d7cc04940adf59aa5bfc9d5683.png

在这有重写OnConfiguring方法,如果没有构造数据库链接字符串的话则到appsettings.json中去取,注意将appsettings.json文件始终复制

952dc4d990aba85c793132366d5d8cb2.png

appsettings.json

{

"ConnectionStrings": {

"SQLConnection": "server=127.0.0.1;database=eftest;userid=root;pwd=123456;port=3306;sslmode=none;"

},

"server.urls": "http://localhost:5001" //监听端口配置,可多个

}

1.4数据迁移生成数据库

打开PM选择默认项目Entity

f97be6c2559f5a33890fd21a30bacb6c.png

输入

PM> Add-Migration init

若提示The configuration file 'appsettings.json' was not found and is not optional. The physical path is 'E:VS项目EFTestEntitybinDebugnetcoreapp2.0appsettings.json'.

则为没检测到appsettings.json,需要文件更改属性为复制

提示后进行更新数据库,如下为更新成功。

PM> update-database

68708550a3aadae79df2f8ba67b21fcf.png

b2bbd6dc4659a50d19b230818ca58b8b.png

最后Entity项目内容如下

071138cb90f8e0d18493fc132d0e73fd.png

2.仓储层搭建

新建.NetCore类库项目Repository并引用项目Entity

2.1添加Nuget包 PM> Install-Package Microsoft.EntityFrameworkCore -version 2.0.3 PM> Install-Package LinqKit.Microsoft.EntityFrameworkCore -version 1.1.15

7df94574b62e7c9b9fa4d8ec47384426.png

2.2添加必要的支持IEnumerable和IQueryable 的OrderBy字符串支持类LinqExtensions

977ba1fb6488bd13ad3ffa521291e71b.png

76f703b2360ea888c738582d91f8ee3b.png

d79f24f4e3f57d046bceb2e018c7f572.png

b1db1d52c4f5aa5ce23ccf56dfeaa1a5.png

以及分页支持类PageData

3fe339f850cb55e78b94f7d88ea784c0.png

2.3构造RepositoryBase

f44cf514972786d167e83f8d99a88405.png

e0e4455dc4fe4160f0dc462ad0bcd408.png

2.5添加工作单元UnitOfWork

3f93f7f68c2bdcb2ab2387173436e650.png

e6481123ba63e162d4a24cff26391bf1.png

这样仓储层就构造完成了,篇幅已经很长了,Service层就先不介绍了。

3.WebApi项目测试

新建.NetCore的项目的Web应用程序ApiTest,选择webapi方式,并引用Entity和Repository项目

3.1注入EF

46294051386af683f6de076e9edc9b1f.png

3.2测试

f1d22216dbcf2d1231467ef6479908b4.png

测试结果:

仓储分页查询 测试

181820001de235769aaa2c47b8a0751b.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值