这里我们用三层架构搭建一个连接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相关推荐

  1. mysql 三层架构开发_搭建连接MySql的三层架构的ASP.NetCore2.0的WebApi

    这里我们用三层架构搭建一个连接MySql的ASP.netCore模板的WebApi项目 首先添加WebApi项目(ASP.NetCore版本) 右键解决方案>新建项目> 选择Web> ...

  2. paip.最好的脚本语言node js 环境搭建连接mysql

    paip.最好的脚本语言node js 环境搭建连接mysql #====下载node...走十一个exe..容易的.. 1 #0----Hello world   .js 2 #---------模 ...

  3. 虚拟机Linux系统安装mysql8.0与Navicat连接mysql

    Linux安装mysql8.0与Navicat连接mysql 一.Linux下载安装mysq 1 下载mysql安装包,也可以通过本地xftp上传到虚拟机 2 将下载的mysql安装包解压 3 配置m ...

  4. 从0开始搭建坚不可摧的Web系统主流架构

    从0开始搭建坚不可摧的Web系统主流架构 转自:http://mp.weixin.qq.com/s/HKqgdR0qM3FhdGWcWnlpug 主题简介: 1.网站系统架构当前现状 2.Web系统主 ...

  5. 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 ...

  6. CentOS安装GlassFish4.0 配置JDBC连接MySQL

    转自:http://linux.it.net.cn/CentOS/course/2014/0724/3319.html 版本glassfish-4.0.zip 1.解压,拷贝到指定安装路径   unz ...

  7. 0配置EF连接MySql数据库_第八节:EF Core连接MySql数据库

    一. 前提 1.安装EF Core连接MySQL的驱动,这里有两类: (1).Oracle官方出品:MySql.Data.EntityFrameworkCore (版本:8.0.17) (2).其他第 ...

  8. ssh mysql环境搭建_搭建一个MySQL高可用架构集群环境

    架构 使用一台MHA manager.一台MySQL master节点.两台MySQL slave节点 软件版本 虚拟机:Ubuntu 18 MySQL:5.7.32 MHA:0.54 环境检查 安装 ...

  9. MySQL的三层架构(连接认证、解析优化和存储引擎)

    对于数据库的认识,相信很大一部分人像我一样只停留在写各种SQL.优化各种查询语句以及索引的建立之上,只是停留在"会用"的基础上.但是如果想要充分发挥MySQL的性能,就必须要了解其 ...

最新文章

  1. 不知道这 7 大 OpenCV 函数怎么向计算机视觉专家进阶?
  2. 中引入文件报错_关于前端开发中的模块化
  3. 关于img 403 forbidden的一些思考
  4. ubuntu 10.10 修改下载源的方法
  5. python面试题总结(一)字符串反转,写取指定数函数
  6. mybatis 插入数据后返回自增id
  7. 手动抛出异常_(七)异常处理
  8. 【Flink】Flink RocksDB内存占用一直增大 state.backend.rocksdb.memory.managed
  9. java判断字符串是子串_【Java】判断字符串是否包含子字符串
  10. coco 数据集_如何用 coco 数据集训练 Detectron2 模型?
  11. linux find mtime 用法,Linux find命令常见用法汇总(4)
  12. echarts3力引导布局,固定某节点
  13. python获取浏览器cookie_python3实现读取chrome浏览器cookie
  14. ERP项目组成员及各项目组职责
  15. 购物车一个Adaper,可以删除,全选反选,数量加减
  16. CentOS7.5部署WeADMIN监控主机交换机配置[详解]
  17. 2019上半年深圳二手楼市热度如何?(链家数据爬取分析)
  18. 肿瘤NGS的常规检测流程
  19. 传奇开区发布广告和选择广告投放网站的那些事
  20. 开发者不可错过的 10 个人工智能开源项目

热门文章

  1. 轻量级监控系统 - Monitorix
  2. Cygwin的中文支持(解决乱码)
  3. SBO的5个开发原则-机遇只给有准备的人[转]
  4. WebRtc搭建 coturn
  5. cmake与ninja构建编译(二)
  6. 802.11协议常用语缩写
  7. socket解决:Address already in use报错问题
  8. Android之Camera拍照
  9. CentOS之安装docker
  10. graph面板x轴模式包括哪些_Grafana panel之Graph