(更新时间)2021年5月28日 商城高并发秒杀系统(.NET Core版) 03-微服务架构设计
发布日期:2021-06-29 15:16:34
浏览次数:2
分类:技术文章
本文共 4145 字,大约阅读时间需要 13 分钟。
一:数据库使用
首先安装包:Microsoft.EntityFrameworkCore.Design
////// 订单服务上下文/// public class OrderContext : DbContext{ public OrderContext(DbContextOptionsoptions) : base(options) { } /// /// 订单集合 /// public DbSetOrders { get; set; } /// /// 订单项集合 /// public DbSetOrderItems { set; get; }}
// 1、IOC容器中注入dbcontextservices.AddDbContext(optionsBuilder =>{ optionsBuilder.UseMySQL(Configuration.GetConnectionString("DefaultConnection"));});// 2、注册用户serviceservices.AddScoped ();services.AddScoped ();// 3、注册用户仓储services.AddScoped ();services.AddScoped ();
数据库迁移:
1 程序包管理器控制台 , Package Manager Console(PMC)如果你用visual studio 开发建议使用PMC迁移方式,该方式是同时支持efcore和原先的ef 迁移的
2 命令行工具 ,Command line interface (CLI)
该方式适用于跨平台开发的时候进行迁移数据库的,也就是可脱离visual studio,比如你用vs code,或直接打开cmd控制台进行操作
1.下面先列出两种方式对比,然后再分用vs 和vscode分别详细说明
迁移命令描述 | CLI命令 | PMC命令 |
---|---|---|
创建迁移:migrationname为迁移名称 | dotnet ef migrations add migrationName | add-migration migrationName |
移除迁移(删除最近的一次迁移) | dotnet ef migrations remove | remove-migration |
应用所有的迁移(使迁移文件应用到数据库) | dotnet ef database update | update-database |
指定版本进行迁移 | dotnet ef database update migrationName | update-database migrationName |
生成对应版本的脚本 | dotnet ef migrations script | Script-Migration |
查看迁移列表 | dotnet ef migrations list | |
查看数据库上下文信息 | dotnet ef dbcontext info |
二:微服务架构设计
以订单微服务为例
- model模型层
////// 订单模型/// public class Order{ [Key] public int Id { set; get; } // 主键 public string OrderType { set; get; } // 订单类型 // public string OrderFlag { set; get; } // 订单标志 public int UserId { set; get; } // 用户Id public string OrderSn { set; get; }// 订单号 public string OrderTotalPrice { set; get; } // 订单总价 public DateTime Createtime { set; get; } // 创建时间 public DateTime Updatetime { set; get; } // 更新时间 public DateTime Paytime { set; get; }// 支付时间 public DateTime Sendtime { set; get; }// 发货时间 public DateTime Successtime { set; get; }// 订单完成时间 public int OrderStatus { set; get; } // 订单状态 public string OrderName { set; get; } // 订单名称 public string OrderTel { set; get; } // 订单电话 public string OrderAddress { set; get; } // 订单地址 public string OrderRemark { set; get; }// 订单备注 // 订单项 public ListOrderItems { set; get; }}
- Service服务层
////// 订单服务实现/// public class OrderServiceImpl : IOrderService{ public readonly IOrderRepository OrderRepository; public OrderServiceImpl(IOrderRepository OrderRepository) { this.OrderRepository = OrderRepository; } public void Create(Order Order) { OrderRepository.Create(Order); } public void Delete(Order Order) { OrderRepository.Delete(Order); } public Order GetOrderById(int id) { return OrderRepository.GetOrderById(id); } public IEnumerableGetOrders() { return OrderRepository.GetOrders(); } public void Update(Order Order) { OrderRepository.Update(Order); } public bool OrderExists(int id) { return OrderRepository.OrderExists(id); }}
- Repository仓储层
////// 订单仓储实现/// public class OrderRepository : IOrderRepository{ public OrderContext OrderContext; public OrderRepository(OrderContext OrderContext) { this.OrderContext = OrderContext; } public void Create(Order Order) { OrderContext.Orders.Add(Order); OrderContext.SaveChanges(); } public void Delete(Order Order) { OrderContext.Orders.Remove(Order); OrderContext.SaveChanges(); } public Order GetOrderById(int id) { return OrderContext.Orders.Find(id); } public IEnumerableGetOrders() { return OrderContext.Orders.ToList(); } public void Update(Order Order) { OrderContext.Orders.Update(Order); OrderContext.SaveChanges(); } public bool OrderExists(int id) { return OrderContext.Orders.Any(e => e.Id == id); }}
转载地址:https://codeboy.blog.csdn.net/article/details/117370531 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
逛到本站,mark一下
[***.202.152.39]2024年05月01日 15时34分44秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
awk 的内置变量 NF、NR、FNR、FS、OFS、RS、ORS
2019-04-29
CentOS系统内核升级攻略
2019-04-29
linux系统时区修改(Debian的主机和docker)
2019-04-29
docker-compose 安装
2019-04-29
crontab 定时任务
2019-04-29
查看docker veth pair与宿主机上网卡的对应关系
2019-04-29
使用 GitLab CI 进行持续集成的一些踩坑
2019-04-29
企业云盘给贸易业带来新的效益
2019-04-29
Linux入门常用命令
2019-04-29
Spring整理
2019-04-29
SpringMvc加强
2019-04-29
初识Vue全家桶 Nuxt.js(一)
2019-04-29
基本路由及动态路由(二)
2019-04-29
视图:默认模板+默认布局(自定义布局)+nuxt.js页面(三)
2019-04-29
基于nuxt下asyncData,fetch发送axios请求(四)
2019-04-29
插件机制+自定义axios(五)
2019-04-29