(更新时间)2021年5月28日 商城高并发秒杀系统(.NET Core版) 03-微服务架构设计
【摘要】
一:数据库使用
首先安装包:Microsoft.EntityFrameworkCore.Design .NET Core代码配置
/// <summary>
/// 订单服务上下文
///...
一:数据库使用
首先安装包:Microsoft.EntityFrameworkCore.Design
.NET Core代码配置
/// <summary>
/// 订单服务上下文
/// </summary>
public class OrderContext : DbContext
{
public OrderContext(DbContextOptions<OrderContext> options) : base(options)
{
}
/// <summary>
/// 订单集合
/// </summary>
public DbSet<Order> Orders { get; set; }
/// <summary>
/// 订单项集合
/// </summary>
public DbSet<OrderItem> OrderItems { set; get; }
}
// 1、IOC容器中注入dbcontext
services.AddDbContext<OrderContext>(optionsBuilder =>
{
optionsBuilder.UseMySQL(Configuration.GetConnectionString("DefaultConnection"));
});
// 2、注册用户service
services.AddScoped<IOrderService, OrderServiceImpl>();
services.AddScoped<IOrderItemService, OrderItemServiceImpl>();
// 3、注册用户仓储
services.AddScoped<IOrderRepository, OrderRepository>();
services.AddScoped<IOrderItemRepository, OrderItemRepository>();
数据库迁移:
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模型层
/// <summary>
/// 订单模型
/// </summary>
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<OrderItem> OrderItems { set; get; }
}
- Service服务层
/// <summary>
/// 订单服务实现
/// </summary>
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<Order> GetOrders()
{
return OrderRepository.GetOrders();
}
public void Update(Order Order)
{
OrderRepository.Update(Order);
}
public bool OrderExists(int id)
{
return OrderRepository.OrderExists(id);
}
}
- Repository仓储层
/// <summary>
/// 订单仓储实现
/// </summary>
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<Order> 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);
}
}
文章来源: codeboy.blog.csdn.net,作者:愚公搬代码,版权归原作者所有,如需转载,请联系作者。
原文链接:codeboy.blog.csdn.net/article/details/117370531
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
作者其他文章
评论(0)