(更新时间)2021年5月28日 商城高并发秒杀系统(.NET Core版) 03-微服务架构设计
发布日期:2021-06-29 15:16:34 浏览次数:2 分类:技术文章

本文共 4145 字,大约阅读时间需要 13 分钟。

一:数据库使用

首先安装包:Microsoft.EntityFrameworkCore.Design

.NET Core代码配置

/// /// 订单服务上下文/// public class OrderContext : DbContext{
public OrderContext(DbContextOptions
options) : base(options) {
} ///
/// 订单集合 /// public DbSet
Orders {
get; set; } ///
/// 订单项集合 /// public DbSet
OrderItems {
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 List
OrderItems {
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 IEnumerable
GetOrders() {
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 IEnumerable
GetOrders() {
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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:(更新时间)2021年5月28日 商城高并发秒杀系统(.NET Core版) 04-中台调用组件的封装
下一篇:(更新时间)2021年5月28日 商城高并发秒杀系统(.NET Core版) 02-数据库设计

发表评论

最新留言

逛到本站,mark一下
[***.202.152.39]2024年05月01日 15时34分44秒