前沿
园子里已有挺多博文介绍了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
1.2添加实体
父类EntityBase
实体类SysUser
1.3构造DbContext
在这有重写OnConfiguring方法,如果没有构造数据库链接字符串的话则到appsettings.json中去取,注意将appsettings.json文件始终复制
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
输入
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,需要文件更改属性为复制
提示后进行更新数据库,如下为更新成功。
PM> update-database
最后Entity项目内容如下
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
2.2添加必要的支持IEnumerable<T>和IQueryable<T> 的OrderBy字符串支持类LinqExtensions
以及分页支持类PageData<T>
2.3构造RepositoryBase<T>
2.4添加Table文件夹,添加SysUserRepository
2.5添加工作单元UnitOfWork
这样仓储层就构造完成了,篇幅已经很长了,Service层就先不介绍了。
3.WebApi项目测试
新建.NetCore的项目的Web应用程序ApiTest,选择webapi方式,并引用Entity和Repository项目
3.1注入EF
3.2测试
测试结果:
仓储分页查询 测试
原文地址:https://www.cnblogs.com/jomzhang/p/10245077.html
.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com