c 三层架构 mysql_搭建连接MySql的三层架构的ASP.NetCore2.0的WebApi

此时的目录结构:

7ecd153653cd878ec4025be47052224a.png

添加实体层Entity

右键添加>新建项目>.Net Core类库

a7b4796c9025f23e834498e2c7c2c1a3.png

添加后的目录结构

91be0c7521789558e1c80fdc371ed523.png

BaseEntity:

usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel.DataAnnotations;usingSystem.Runtime.Serialization;usingSystem.Text;namespaceEntity.Core{//DB表基础属性///publicabstractclassBaseEntity {publicBaseEntity() { CreteTime= DateTime.Now; }//主键Id///[DataMember] [Key]publicT Id { get; set; }//DB版号,Mysql详情参考;http://www.cnblogs.com/shanyou/p/6241612.html/[Timestamp]//Mysql不允许byte[]类型上标记TimeStamp/RowVersion,这里使用DateTime类型配合标记ConcurrencyCheck达到并发控制[ConcurrencyCheck]publicDateTime RowVersion { get; set; }//创建时间///publicDateTime CreteTime { get; set; } }}

Product:

usingEntity.Core;usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel.DataAnnotations;usingSystem.Text;namespaceEntity.Table{//商品类///publicclassProduct : BaseEntity {//名称///[StringLength( 20)] [Required]publicstringName { get; set; }//描述///[StringLength( 500)] [Required]publicstringDeion { get; set; }//类别///[Range( 1, int.MaxValue)]publicintCategory { get; set; }//原价///[Required]publicdecimalPrice { get; set; }//现价///publicdecimalDiscount { get; set; } }}

添加数据层DAL:

右键添加>新建项目>.NET Core 类库

4a91fd9728c386c5ed94cd6b4c4c315d.png

添加引用:

Microsoft.EntityFrameworkCore(也可加入Microsoft.AspNetCore.All,但会有用不到的功能造成浪费)

Microsoft.EntityFrameworkCore.Tools(迁移支持)

Pomelo.EntityFrameworkCore.MySql(Mysql支持)具体使用细则,请参考:Pomelo.EntityFrameworkCore.MySql使用细则

netcoreapp2.0

f611b69443511158fc0fd4354b251274.png

添加DbContext数据上下文

usingEntity.Table;usingMicrosoft.EntityFrameworkCore;usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;namespaceDAL{publicclassProductContext : DbContext {//https://docs.microsoft.com/en-us/aspnet/core/data/ef-mvc/complex-data-modelpublicProductContext(DbContextOptions options) : base(options) {//在此可对数据库连接字符串做加解密操作}publicDbSet Courses { get; set; }protectedoverridevoidOnModelCreating(ModelBuilder modelBuilder) {base.OnModelCreating(modelBuilder); } }}

ASP.Net Core API项目中引用刚创建的DAL类库

添加Service服务层

右键添加>新建项目>.NetCore 类库

b20985aed1cc2c0cb421fc9dd8c83b6d.png

添加引用:

添加Entity和DAL引用,其次再添加第三方数据仓储Microsoft.EntityFrameworkCore.UnitOfWork(最新)

文件目录如下:

2039d675e935cd3cf947b604c9300111.png

IProductService:

usingSystem;usingSystem.Collections.Generic;usingSystem.Text;namespaceService.ProductService{publicinterfaceIProductService {stringTest(); }}

ProductService:

usingEntity.Table;usingMicrosoft.EntityFrameworkCore;namespaceService.ProductService{publicclassProductService : IProductService {privatereadonlyIUnitOfWork _unitOfWork;publicProductService(IUnitOfWork unitOfWork) { _unitOfWork= unitOfWork; }publicstringTest() {varrepo = _unitOfWork.GetRepository (); repo.Insert(newProduct { Category= 1, Deion= "此商品为澳洲代购,买不了吃亏买不了上当", Discount= ( decimal) 899.21, Price= ( decimal) 98.2, Name= "澳洲袋鼠粉", }); _unitOfWork.SaveChanges();//提交到数据库varresult = repo.GetFirstOrDefault()?.Deion ?? string.Empty;returnresult; } }}

ASP.Net Core API添加刚创建的Service类库引用

完整csproj如下:

netcoreapp2.0

控制器中使用service

using System.Collections.Generic;

usingMicrosoft.AspNetCore.Mvc;

usingService.ProductService; namespaceASP.Net_Core_API.Controllers{ [Route("api/[controller]")]publicclassValuesController : Controller {privateIProductService _productService;publicValuesController(IProductService productService) { _productService= productService; }//GET api/values[HttpGet]publicIEnumerable< string> Get() {varresult = _productService.Test();returnnewstring[] { "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{publicclassStartup {publicStartup(IConfiguration configuration) { Configuration= configuration; }publicIConfiguration Configuration { get; }//This method gets called by the runtime. Use this method to add services to the container.publicvoidConfigureServices(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.publicvoidConfigure(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"表示已成功更新数据库

完整操作如下

7c811341bee48efd8e67cc5a62ba4c2c.png

Tip:如果是非第一次迁移,就不能再输入PM>add-migration init,而是输入:

PM>add-migration "对本次迁移的说明"

例如,本次对Entity的某张表添加了Name属性.迁移时输入PM>add-migration AddName

输入以上待执行后,依旧输入以下即可

PM>update-database

会发现在DAL程序家下成功生成了以下目录

eaef92bff03713944876a6a1fda18e95.png

再打开数据库成功依据实体Entity生成了Product表

dceb6a303d8386de5a859d4194051e35.png

运行程序

97055de2790d1a76a0bcc0dc6e48cdfa.png

成功Run通,奖励个鸡腿压压惊

专案下载链接:Demo(https://files.cnblogs.com/files/xiaoliangge/DotNetCore2.0.zip)

github源码链接:DotNetCore2.0(https://github.com/liuyl1992/DotNetCore2.0)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C# WinForm简单三层框架源码共享。 本框架采用三层架构实现,大家可直接在上面扩展,进行自己系统的二次开发等。 框架中数据库字符串的配置在根目录的DBCfg.xml文件中,该文件中部分内容已经加密, 文件中有两个数据库的字符串,实际过程中只用一个即可(案例中是我自己的项目的需求) 系统框架简介: 采用广为人知的简单三层DAL(DBUtility),BLL,UI层实现,习惯开发web的朋友一看就明白了 框架默认提供很多方法,如需添加新的操作表,只需要新建一个类,拷贝下基本的代码即可 同时提供数据库字符串修改窗体,方便您的修改。 运行本框架需要创建一张表 sql如下: CREATE TABLE [dbo].[Infos]( [Iid] [int] IDENTITY(1,1) NOT NULL, [title] [varchar](255) COLLATE Chinese_PRC_CI_AS NULL, [details] [text] COLLATE Chinese_PRC_CI_AS NULL, [imgs] [varchar](5000) COLLATE Chinese_PRC_CI_AS NULL, [classify] [varchar](50) COLLATE Chinese_PRC_CI_AS NULL, [publiship] [varchar](30) COLLATE Chinese_PRC_CI_AS NULL, [publishman] [varchar](20) COLLATE Chinese_PRC_CI_AS NULL, [publishtime] [datetime] NULL, [isshow] [varchar](4) COLLATE Chinese_PRC_CI_AS NULL, [istop] [varchar](4) COLLATE Chinese_PRC_CI_AS NULL, [hits] [int] NULL, [notes] [varchar](255) COLLATE Chinese_PRC_CI_AS NULL, CONSTRAINT [PK_Infos] PRIMARY KEY CLUSTERED ( [Iid] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值