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<T>和IQueryable<T> 的OrderBy字符串支持类LinqExtensions
  2.3构造RepositoryBase<T>
  2.4添加Table文件夹,添加SysUserRepository
  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

640?wx_fmt=png

1.2添加实体

父类EntityBase

640?wx_fmt=png

实体类SysUser

640?wx_fmt=png

640?wx_fmt=png

1.3构造DbContext

640?wx_fmt=png

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

640?wx_fmt=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


640?wx_fmt=png

输入

PM> Add-Migration init

若提示The configuration file 'appsettings.json' was not found and is not optional. The physical path is 'E:\VS项目\EFTest\Entity\bin\Debug\netcoreapp2.0\appsettings.json'.

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

提示640?wx_fmt=png后进行更新数据库,如下为更新成功。

PM> update-database

 640?wx_fmt=png

640?wx_fmt=png

 最后Entity项目内容如下

640?wx_fmt=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

 640?wx_fmt=png

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

640?wx_fmt=png

640?wx_fmt=png

640?wx_fmt=png

640?wx_fmt=png

以及分页支持类PageData<T>

640?wx_fmt=png

2.3构造RepositoryBase<T>

640?wx_fmt=png

2.4添加Table文件夹,添加SysUserRepository

640?wx_fmt=png

2.5添加工作单元UnitOfWork

640?wx_fmt=png

640?wx_fmt=png

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

3.WebApi项目测试

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

3.1注入EF

640?wx_fmt=png

3.2测试

640?wx_fmt=png

测试结果:

 640?wx_fmt=png

仓储分页查询 测试

640?wx_fmt=png

原文地址:https://www.cnblogs.com/jomzhang/p/10245077.html


 
 

.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com

640?wx_fmt=jpeg


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值