栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > .Net

(更新时间)2021年5月28日 商城高并发秒杀系统(.NET Core版) 03-微服务架构设计

.Net 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

(更新时间)2021年5月28日 商城高并发秒杀系统(.NET Core版) 03-微服务架构设计

一:数据库使用

首先安装包: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容器中注入dbcontext
services.AddDbContext(optionsBuilder =>
{
    optionsBuilder.UseMySQL(Configuration.GetConnectionString("DefaultConnection"));
});
// 2、注册用户service
services.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 migrationNameadd-migration migrationName
移除迁移(删除最近的一次迁移)dotnet ef migrations removeremove-migration
应用所有的迁移(使迁移文件应用到数据库)dotnet ef database updateupdate-database
指定版本进行迁移dotnet ef database update migrationNameupdate-database migrationName
生成对应版本的脚本dotnet ef migrations scriptScript-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);
    }
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/984840.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号