.netcore 2.0 mysql_搭建连接MySql的三层架构的ASP.NetCore2.0的WebApi
这里我们用三层架构搭建一个连接MySql的ASP.netCore模板的WebApi项目
首先添加WebApi项目(ASP.NetCore版本)
右键解决方案>新建项目>
选择Web>ASP.NET Core Web应用程序(.NET Core)
选择Web API
此时的目录结构:
添加实体层Entity
右键添加>新建项目>.Net Core类库
添加后的目录结构
BaseEntity:
usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel.DataAnnotations;usingSystem.Runtime.Serialization;usingSystem.Text;namespaceEntity.Core
{///
///DB表基础属性///
public abstract class BaseEntity{publicBaseEntity()
{
CreteTime=DateTime.Now;
}///
///主键Id///
[DataMember]
[Key]public T Id { get; set; }///
///DB版号,Mysql详情参考;http://www.cnblogs.com/shanyou/p/6241612.html
///
//[Timestamp]//Mysql不允许byte[]类型上标记TimeStamp/RowVersion,这里使用DateTime类型配合标记ConcurrencyCheck达到并发控制
[ConcurrencyCheck]public DateTime RowVersion { get; set; }///
///创建时间///
public DateTime CreteTime { get; set; }
}
}
Product:
usingEntity.Core;usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel.DataAnnotations;usingSystem.Text;namespaceEntity.Table
{///
///商品类///
public class Product : BaseEntity{///
///名称///
[StringLength(20)]
[Required]public string Name { get; set; }///
///描述///
[StringLength(500)]
[Required]public string Description { get; set; }///
///类别///
[Range(1, int.MaxValue)]public int Category { get; set; }///
///原价///
[Required]public decimal Price { get; set; }///
///现价///
public decimal Discount { get; set; }
}
}
添加数据层DAL:
右键添加>新建项目>.NET Core 类库
添加引用:
Microsoft.EntityFrameworkCore(也可加入Microsoft.AspNetCore.All,但会有用不到的功能造成浪费)
Microsoft.EntityFrameworkCore.Tools(迁移支持)
Pomelo.EntityFrameworkCore.MySql(Mysql支持)具体使用细则,请参考:Pomelo.EntityFrameworkCore.MySql使用细则
netcoreapp2.0
添加DbContext数据上下文
usingEntity.Table;usingMicrosoft.EntityFrameworkCore;usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;namespaceDAL
{public classProductContext : DbContext
{//https://docs.microsoft.com/en-us/aspnet/core/data/ef-mvc/complex-data-model
public ProductContext(DbContextOptions options) : base(options)
{//在此可对数据库连接字符串做加解密操作
}public DbSet Courses { get; set; }protected override voidOnModelCreating(ModelBuilder modelBuilder)
{base.OnModelCreating(modelBuilder);
}
}
}
ASP.Net Core API项目中引用刚创建的DAL类库
添加Service服务层
右键添加>新建项目>.NetCore 类库
添加引用:
添加Entity和DAL引用,其次再添加第三方数据仓储Microsoft.EntityFrameworkCore.UnitOfWork(最新)
文件目录如下:
IProductService:
usingSystem;usingSystem.Collections.Generic;usingSystem.Text;namespaceService.ProductService
{public interfaceIProductService
{stringTest();
}
}
ProductService:
usingEntity.Table;usingMicrosoft.EntityFrameworkCore;namespaceService.ProductService
{public classProductService : IProductService
{private readonlyIUnitOfWork _unitOfWork;publicProductService(IUnitOfWork unitOfWork)
{
_unitOfWork=unitOfWork;
}public stringTest()
{var repo = _unitOfWork.GetRepository();
repo.Insert(newProduct
{
Category= 1,
Description= "此商品为澳洲代购,买不了吃亏买不了上当",
Discount= (decimal)899.21,
Price= (decimal)98.2,
Name= "澳洲袋鼠粉",
});
_unitOfWork.SaveChanges();//提交到数据库
var result = repo.GetFirstOrDefault()?.Description ?? string.Empty;returnresult;
}
}
}
ASP.Net Core API添加刚创建的Service类库引用
完整csproj如下:
netcoreapp2.0
控制器中使用service
usingSystem.Collections.Generic;usingMicrosoft.AspNetCore.Mvc;usingService.ProductService;namespaceASP.Net_Core_API.Controllers
{
[Route("api/[controller]")]public classValuesController : Controller
{privateIProductService _productService;publicValuesController(IProductService productService)
{
_productService=productService;
}//GET api/values
[HttpGet]public IEnumerableGet()
{var result =_productService.Test();return new string[] { "value1", result };
}
}
}
Startup文件中加入Mysql支持和对应的需要的注入的service还有UnitOfWork的支持
完整文件如下:
usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Threading.Tasks;usingMicrosoft.AspNetCore.Builder;usingMicrosoft.AspNetCore.Hosting;usingMicrosoft.Extensions.Configuration;usingMicrosoft.Extensions.DependencyInjection;usingMicrosoft.Extensions.Logging;usingMicrosoft.Extensions.Options;usingMicrosoft.EntityFrameworkCore;usingEntity.Table;usingDAL;usingService.ProductService;namespaceASP.Net_Core_API
{public classStartup
{publicStartup(IConfiguration configuration)
{
Configuration=configuration;
}public IConfiguration Configuration { get; }//This method gets called by the runtime. Use this method to add services to the container.
public voidConfigureServices(IServiceCollection services)
{
services.AddDbContext(options =>options.UseMySql(Configuration.GetConnectionString("MySqlConnection")));//添加Mysql支持
services.AddUnitOfWork();//添加UnitOfWork支持
services.AddScoped(typeof(IProductService), typeof(ProductService));//用ASP.NET Core自带依赖注入(DI)注入使用的类
services.AddMvc();
}//This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public voidConfigure(IApplicationBuilder app, IHostingEnvironment env)
{if(env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseMvc();
}
}
}
配置appsettings.json中Mysql连接字符串
{"ConnectionStrings": {"MySqlConnection": "Server=localhost;database=NetCore_WebAPI-Mysql;uid=root;pwd=111111;"},"Logging": {"IncludeScopes": false,"Debug": {"LogLevel": {"Default": "Warning"}
},"Console": {"LogLevel": {"Default": "Warning"}
}
}
}
迁移数据库:
打开程序包管理器控制台:工具>NuGet包管理器>程序包管理器控制台,默认项目选中包含了DbCOntext的程序集,这里是DAL,程序包源选择全部
输入:
PM>add-migration init
待执行后输出"To undo this action,use Remove-Migration"表示生成了迁移代码
然后再输入:
PM>update-database
待执行后输出"Done"表示已成功更新数据库
完整操作如下
Tip:如果是非第一次迁移,就不能再输入PM>add-migration init,而是输入:
PM>add-migration "对本次迁移的说明"
例如,本次对Entity的某张表添加了Name属性.迁移时输入PM>add-migration AddName
输入以上待执行后,依旧输入以下即可
PM>update-database
会发现在DAL程序家下成功生成了以下目录
再打开数据库成功依据实体Entity生成了Product表
运行程序
成功Run通
专案下载链接:Demo
github源码链接(持续更新):
.netcore 2.0 mysql_搭建连接MySql的三层架构的ASP.NetCore2.0的WebApi相关推荐
- mysql 三层架构开发_搭建连接MySql的三层架构的ASP.NetCore2.0的WebApi
这里我们用三层架构搭建一个连接MySql的ASP.netCore模板的WebApi项目 首先添加WebApi项目(ASP.NetCore版本) 右键解决方案>新建项目> 选择Web> ...
- paip.最好的脚本语言node js 环境搭建连接mysql
paip.最好的脚本语言node js 环境搭建连接mysql #====下载node...走十一个exe..容易的.. 1 #0----Hello world .js 2 #---------模 ...
- 虚拟机Linux系统安装mysql8.0与Navicat连接mysql
Linux安装mysql8.0与Navicat连接mysql 一.Linux下载安装mysq 1 下载mysql安装包,也可以通过本地xftp上传到虚拟机 2 将下载的mysql安装包解压 3 配置m ...
- 从0开始搭建坚不可摧的Web系统主流架构
从0开始搭建坚不可摧的Web系统主流架构 转自:http://mp.weixin.qq.com/s/HKqgdR0qM3FhdGWcWnlpug 主题简介: 1.网站系统架构当前现状 2.Web系统主 ...
- centos jdbc配置mysql_CentOS安装glassfish4.0配置jdbc连接mysql
版本glassfish-4.0.zip 1.解压,拷贝到指定安装路径 unzip glassfish-4.0.zip cp cp glassfish4 /usr/local/ -rf 2.设置glas ...
- CentOS安装GlassFish4.0 配置JDBC连接MySQL
转自:http://linux.it.net.cn/CentOS/course/2014/0724/3319.html 版本glassfish-4.0.zip 1.解压,拷贝到指定安装路径 unz ...
- 0配置EF连接MySql数据库_第八节:EF Core连接MySql数据库
一. 前提 1.安装EF Core连接MySQL的驱动,这里有两类: (1).Oracle官方出品:MySql.Data.EntityFrameworkCore (版本:8.0.17) (2).其他第 ...
- ssh mysql环境搭建_搭建一个MySQL高可用架构集群环境
架构 使用一台MHA manager.一台MySQL master节点.两台MySQL slave节点 软件版本 虚拟机:Ubuntu 18 MySQL:5.7.32 MHA:0.54 环境检查 安装 ...
- MySQL的三层架构(连接认证、解析优化和存储引擎)
对于数据库的认识,相信很大一部分人像我一样只停留在写各种SQL.优化各种查询语句以及索引的建立之上,只是停留在"会用"的基础上.但是如果想要充分发挥MySQL的性能,就必须要了解其 ...
最新文章
- 不知道这 7 大 OpenCV 函数怎么向计算机视觉专家进阶?
- 中引入文件报错_关于前端开发中的模块化
- 关于img 403 forbidden的一些思考
- ubuntu 10.10 修改下载源的方法
- python面试题总结(一)字符串反转,写取指定数函数
- mybatis 插入数据后返回自增id
- 手动抛出异常_(七)异常处理
- 【Flink】Flink RocksDB内存占用一直增大 state.backend.rocksdb.memory.managed
- java判断字符串是子串_【Java】判断字符串是否包含子字符串
- coco 数据集_如何用 coco 数据集训练 Detectron2 模型?
- linux find mtime 用法,Linux find命令常见用法汇总(4)
- echarts3力引导布局,固定某节点
- python获取浏览器cookie_python3实现读取chrome浏览器cookie
- ERP项目组成员及各项目组职责
- 购物车一个Adaper,可以删除,全选反选,数量加减
- CentOS7.5部署WeADMIN监控主机交换机配置[详解]
- 2019上半年深圳二手楼市热度如何?(链家数据爬取分析)
- 肿瘤NGS的常规检测流程
- 传奇开区发布广告和选择广告投放网站的那些事
- 开发者不可错过的 10 个人工智能开源项目