首先安装包:Microsoft.EntityFrameworkCore.Design
.NET Core代码配置
////// 订单服务上下文 /// public class OrderContext : DbContext { public OrderContext(DbContextOptionsoptions) : base(options) { } /// /// 订单集合 /// public DbSetOrders { get; set; } /// /// 订单项集合 /// public DbSetOrderItems { 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 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); } }



