abp(net core)+easyui+efcore實現倉儲管理系統——ABP整體介紹(一)javascript
abp(net core)+easyui+efcore實現倉儲管理系統——解決方案介紹(二)html
abp(net core)+easyui+efcore實現倉儲管理系統——領域層建立實體(三)前端
abp(net core)+easyui+efcore實現倉儲管理系統——定義倉儲並實現 (四)java
abp(net core)+easyui+efcore實現倉儲管理系統——建立應用服務(五)數據庫
abp(net core)+easyui+efcore實現倉儲管理系統——展示層實現增刪改查之控制器(六)app
abp(net core)+easyui+efcore實現倉儲管理系統——展示層實現增刪改查之列表視圖(七)框架
abp(net core)+easyui+efcore實現倉儲管理系統——展示層實現增刪改查之增刪改視圖(八)異步
abp(net core)+easyui+efcore實現倉儲管理系統——展示層實現增刪改查之菜單與測試(九)工具
abp(net core)+easyui+efcore實現倉儲管理系統——多語言(十)post
經過abp(net core)+easyui+efcore實現倉儲管理系統——展示層實現增刪改查之控制器(六)至abp(net core)+easyui+efcore實現倉儲管理系統——展示層實現增刪改查之菜單與測試(九)四篇文章的學習,咱們使用ASP.NET Core Mvc的常規的實現方式實現了對數據庫的CURD操做。ABP有其默認的實現增刪改查的方式。咱們能夠先看一下「ABP.TPLMS.Web.Mvc」項目中的「Views\Users」的相關代碼,能夠查看一下ABP默認是如何實現對用戶信息的增刪改查的。咱們發現ABP中的用戶信息的增刪改查是經過繼承 AsyncCrudAppService這個類來實現CURD操做,前端頁面中經過javascript調用WEB API來實現增刪改查。固然還有一個同步操做類CrudAppService,經過繼承這個類來實現CURD的同步操做。對於這兩個類的的區別在於AsyncCrudAppService是CrudAppService異步實現。ABP做爲開發框架,經過以上兩個基類實現了對於CRUD這種通用功能的一種解決方案。在接下來的幾篇文章中,咱們要經過繼承 AsyncCrudAppService這個類來實現CURD操做,在前端經過調用WebAPI來實現對供應商信息的增刪改查功能。
先來看一下AsyncCrudAppService與CrudAppService這兩個類具體提供的功能。
首先,這兩個類都繼承自CrudAppServiceBase類。如圖1,圖2。
圖1
圖2
其次,這兩個類都提供了Create、Delete、Update、Get、GetAll、GetEntityById方法。
第三,CrudAppServiceBase類提供了有關於權限(xxxPermissionName屬性和CheckxxxPermission方法)的屬性和方法,關於分頁(ApplyPaging)的方法,關於排序(ApplySorting)方法,關於查詢條件(CreateFilteredQuery)的方法,關於對象映射(MapToxxx)的方法。以下圖。
接下來咱們來經過實現一個供應商信息的管理功能來學習一下這種方式實現增刪改查功能。我會經過幾篇文章來一步一步來實現這個供應商管理的功能。
1、建立Supplier實體
1. 在Visual Studio 2017的「解決方案資源管理器」中,右鍵單擊「ABP.TPLMS.Core」項目的「Entitys」文件夾,在彈出菜單中選擇「添加」 --> 「類」。 將類命名爲 Supplier,而後選擇「添加」。
2.建立Supplier類繼承自Entity<int>,經過實現審計模塊中的IHasCreationTime來實現保存建立時間。代碼以下:
using Abp.Domain.Entities; using Abp.Domain.Entities.Auditing; using Abp.Timing; using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Text; namespace ABP.TPLMS.Entitys { public class Supplier : Entity<int>, IHasCreationTime { public const int MaxLength = 255; public Supplier() { this.Address = string.Empty; this.Name = string.Empty; this.Email = string.Empty; this.Code = string.Empty; this.Sex = 0; this.LinkName = string.Empty; this.Status = 0; this.Tel = string.Empty; this.Mobile = string.Empty; this.UserId = 0; CreationTime = Clock.Now; } [Required] [StringLength(50)] public string Code { get; set; } [Required] [StringLength(MaxLength)] public string Name { get; set; } [StringLength(MaxLength)] public string Address { get; set; } [Required] [StringLength(MaxLength)] public string Email { get; set; } [StringLength(MaxLength)] public string LinkName { get; set; } public int Sex { get; set; } [Required] [StringLength(MaxLength)] public string Tel { get; set; } [StringLength(MaxLength)] public string Mobile { get; set; } public int Status { get; set; } public int UserId { get; set; } public DateTime CreationTime { get; set; } } }
3.定義好實體以後,咱們去「ABP.TPLMS.EntityFrameworkCore」項目中的「TPLMSDbContext」類中定義實體對應的DbSet,以應用Code First 數據遷移。添加如下代碼
using Microsoft.EntityFrameworkCore; using Abp.Zero.EntityFrameworkCore; using ABP.TPLMS.Authorization.Roles; using ABP.TPLMS.Authorization.Users; using ABP.TPLMS.MultiTenancy; using ABP.TPLMS.Entitys; namespace ABP.TPLMS.EntityFrameworkCore { public class TPLMSDbContext : AbpZeroDbContext<Tenant, Role, User, TPLMSDbContext> { /* Define a DbSet for each entity of the application */ public TPLMSDbContext(DbContextOptions<TPLMSDbContext> options) : base(options) { } public DbSet<Module> Modules { get; set; } public DbSet<Supplier> Suppliers { get; set; } } }
4.從菜單中選擇「工具->NuGet包管理器器—>程序包管理器控制檯」菜單。
5. 在PMC中,默認項目選擇EntityframeworkCore對應的項目後。輸入如下命令:Add-Migration AddEntitySupplier,建立遷移。以下圖。
6. 在上面的命令執行完畢以後,建立成功後,會在Migrations文件夾下建立時間_AddEntitySupplier格式的類文件,這些代碼是基於DbContext指定的模型。以下圖。
7.在程序包管理器控制檯,輸入Update-Database,回車執行遷移。以下圖。
8.執行成功後,查看數據庫,Suppliers表建立成功。