本示例不講概念,只講怎么用,概念性的內容沒有比官方文檔更清楚的了,我也正在學習,可能理解的地方有不對的歡迎一起交流,但需要您了解以下內容才能看明白
- asp.net core
- Entity Framework ,數據遷移
- DDD領域驅動設計 (Entities、Repositories、Domain Services、Domain Events、Application Services、DTOs等)
- Castle windsor (依賴注入容器)
- AutoMapper(實現Dto類與實體類的雙向自動轉換)
- Bootstrap
- jQuery
Abp下載,MVC項目 Multi Page Web Application 項目名Sample
項目結構

Sample.Core下新建Territory目錄,新建Province模型類
using Abp.Domain.Entities; namespace Sample.Territory { public class Province : Entity<int> { public string Name { get; set; } } }
Sample.EntityFrameworkCore類庫下找到EntityFrameworkCore目錄下的SampleDbContext修改如下
using Microsoft.EntityFrameworkCore; using Abp.Zero.EntityFrameworkCore; using Sample.Authorization.Roles; using Sample.Authorization.Users; using Sample.MultiTenancy; using Sample.Territory; namespace Sample.EntityFrameworkCore { public class SampleDbContext : AbpZeroDbContext<Tenant, Role, User, SampleDbContext> { /* Define a DbSet for each entity of the application */ public SampleDbContext(DbContextOptions<SampleDbContext> options) : base(options) { } //DBSet類表示一個實體的集合 public DbSet<Province> Provinces { get; set; } //如果需要變更數據庫表名需要使用 protected override void OnModelCreating(ModelBuilder modelBuilder) { base.OnModelCreating(modelBuilder); modelBuilder.Entity<Province>().ToTable("Province"); } } }
數據遷移,實體類轉為數據表
PM> Add-Migration addProvince Build started... Build succeeded. To undo this action, use Remove-Migration. PM> update-database Build started... Build succeeded. Applying migration '20200610003957_addProvince'. Done.
Sample.Application類庫下新建Territory目錄,添加ProvinceAppService類,因需求abp提供的方法已經足夠使用,故未添加IProvinceAppService接口
using Abp.Application.Services; using Abp.Domain.Repositories; using Sample.Territory.Dto; namespace Sample.Territory { /// <summary> /// abp提供的常用增刪改查方式 /// </summary> public class ProvinceAppService:AsyncCrudAppService<Province,ProvinceDto> { public ProvinceAppService(IRepository<Province, int> repository) : base(repository) { } } }
Territory目錄下新建Dto目錄, 並添加ProvinceDto實體類
using Abp.Application.Services.Dto; using Abp.AutoMapper; namespace Sample.Territory.Dto { [AutoMapFrom(typeof(Province))] public class ProvinceDto :EntityDto<int> { public string Name { get; set; } } }
同目錄新建ProvinceProfile類,自動映射
using AutoMapper; namespace Sample.Territory.Dto { public class ProvinceProfile : Profile { public ProvinceProfile() { CreateMap<ProvinceDto, Province>(); } } }
選中Sample.Web.Host設為啟動項,所有Api已經自動設置好,並可以測試,效果如下

