Abp VNext 入门——让ABP跑起来 一、Abp 简介 二、项目创建 三、开发教程 3.1、在 Acme.BookStore.Domain.Share 层下创建 BookType 枚举 3.2、在 Acme.BookStore.Domain 层下创建Book实体 3.3、在 Acme.BookStore.EntityFrameworkCore 层下的 BookStoreDbContext 类中将 Book 实体加入 3.4、将 Book 实体映射到数据库表中 3.5、数据迁移 3.6、添加种子数据(可选) 3.7、更新数据库 3.7.1、视图 —> SQL Server对象资源管理器 3.7.2、创建数据库 BootStore 3.7.3、获取连接字符串 3.7.4、更改 appsettings.json ,将上一步复制的数据库连接字符串替换到 ConnectionString->Default 的 值中 3.7.5、F5运行项目 3.8、在 Acme.BookStore.Applicati

因好多群友@我说,ABP他们简单的了解了下,按照官方的教程一路下来跑不起来(倒在了入门的门口),才有了此文。

此文结合官方文档,一步一步带领大家让ABP跑起来(跨过门口)。

建议大家一步一步实际动手操作下

ABP是用于创建现代Web应用程序的完整架构和强大的基础设施! 遵循最佳实践和约定,为你提供SOLID开发经验.

ABP 是一个开源应用程序框架,专注于基于ASP.NET Core的Web应用程序开发,但也支持开发其他类型的应用程序.

二、项目创建

作为入门,这里就不使用CLI创建了,使用在线创建项目,在线地址:https://abp.io/get-started,为了演示,项目名称就用官方的Acme.BookStore

Abp VNext 入门——让ABP跑起来
一、Abp 简介
二、项目创建
三、开发教程
3.1、在 Acme.BookStore.Domain.Share 层下创建 BookType 枚举
3.2、在 Acme.BookStore.Domain 层下创建Book实体
3.3、在 Acme.BookStore.EntityFrameworkCore 层下的 BookStoreDbContext 类中将 Book 实体加入
3.4、将 Book 实体映射到数据库表中
3.5、数据迁移
3.6、添加种子数据(可选)
3.7、更新数据库
3.7.1、视图 —> SQL Server对象资源管理器
3.7.2、创建数据库 BootStore
3.7.3、获取连接字符串
3.7.4、更改 appsettings.json ,将上一步复制的数据库连接字符串替换到 ConnectionString->Default 的 值中
3.7.5、F5运行项目
3.8、在 Acme.BookStore.Application.Contracts 层下创建 BookDto 类及CreateUpdateBookDto类型,并使用 AutoMapper 将 Book 实体转成 BookDto 对象,将CreateUpdateBookDto对象转成Book实体的映射
3.9、创建 IBookAppService 接口 及它的实现类 BookAppService
3.10、设置 Acme.BookStore.HttpApi.Host 为启动项目,并修改它的 appsettings.json 文件并运行
3.10.1、设置 appsettings.json 设置方式同 3.7.4
3.10.2 运行项目
四、ABP分层
4.1、Domain
4.2、Application
4.3、Infrastructure
4.4、HTTP
4.5、Web

 

下载完解压后,使用VS2019 打开后

Abp VNext 入门——让ABP跑起来
一、Abp 简介
二、项目创建
三、开发教程
3.1、在 Acme.BookStore.Domain.Share 层下创建 BookType 枚举
3.2、在 Acme.BookStore.Domain 层下创建Book实体
3.3、在 Acme.BookStore.EntityFrameworkCore 层下的 BookStoreDbContext 类中将 Book 实体加入
3.4、将 Book 实体映射到数据库表中
3.5、数据迁移
3.6、添加种子数据(可选)
3.7、更新数据库
3.7.1、视图 —> SQL Server对象资源管理器
3.7.2、创建数据库 BootStore
3.7.3、获取连接字符串
3.7.4、更改 appsettings.json ,将上一步复制的数据库连接字符串替换到 ConnectionString->Default 的 值中
3.7.5、F5运行项目
3.8、在 Acme.BookStore.Application.Contracts 层下创建 BookDto 类及CreateUpdateBookDto类型,并使用 AutoMapper 将 Book 实体转成 BookDto 对象,将CreateUpdateBookDto对象转成Book实体的映射
3.9、创建 IBookAppService 接口 及它的实现类 BookAppService
3.10、设置 Acme.BookStore.HttpApi.Host 为启动项目,并修改它的 appsettings.json 文件并运行
3.10.1、设置 appsettings.json 设置方式同 3.7.4
3.10.2 运行项目
四、ABP分层
4.1、Domain
4.2、Application
4.3、Infrastructure
4.4、HTTP
4.5、Web

 

下面我将带领大家搭建一个简单的CURD,并简单的带大家认识它的分层及各层是干啥的。

三、开发教程

3.1、在 Acme.BookStore.Domain.Share 层下创建 BookType 枚举

 public enum BookType
    {
        Undefined,
        Adventure,
        Biography,
        Dystopia,
        Fantastic,
        Horror,
        Science,
        ScienceFiction,
        Poetry
    }

3.2、在 Acme.BookStore.Domain 层下创建Book实体

public class Book : AuditedAggregateRoot<Guid>
    {
        public string Name { get; set; }

        public BookType Type { get; set; }

        public DateTime PublishDate { get; set; }

        public float Price { get; set; }
    }

3.3、在 Acme.BookStore.EntityFrameworkCore 层下的 BookStoreDbContext 类中将 Book 实体加入

[ConnectionStringName("Default")]
public class BookStoreDbContext : AbpDbContext<BookStoreDbContext>
{
   public DbSet<AppUser> Users { get; set; }

   public DbSet<Book> Books { get; set; }
 }

3.4、将 Book 实体映射到数据库表中

在 Acme.BookStore.EntityFrameworkCore 层下的 BookStoreDbContextModelCreatingExtensions 类中的 ConfigureBookStore 方法中添加 Book 实体的映射文件

    public static class BookStoreDbContextModelCreatingExtensions
    {
        public static void ConfigureBookStore(this ModelBuilder builder)
        {
            Check.NotNull(builder, nameof(builder));
            builder.Entity<Book>(b =>
            {
                b.ToTable(BookStoreConsts.DbTablePrefix + "Books", BookStoreConsts.DbSchema);
                b.ConfigureByConvention();
                b.Property(x => x.Name).IsRequired().HasMaxLength(128);
            });
        }
    }

3.5、数据迁移

  • 打开 程序包管理器控制台(PMC)
Abp VNext 入门——让ABP跑起来
一、Abp 简介
二、项目创建
三、开发教程
3.1、在 Acme.BookStore.Domain.Share 层下创建 BookType 枚举
3.2、在 Acme.BookStore.Domain 层下创建Book实体
3.3、在 Acme.BookStore.EntityFrameworkCore 层下的 BookStoreDbContext 类中将 Book 实体加入
3.4、将 Book 实体映射到数据库表中
3.5、数据迁移
3.6、添加种子数据(可选)
3.7、更新数据库
3.7.1、视图 —> SQL Server对象资源管理器
3.7.2、创建数据库 BootStore
3.7.3、获取连接字符串
3.7.4、更改 appsettings.json ,将上一步复制的数据库连接字符串替换到 ConnectionString->Default 的 值中
3.7.5、F5运行项目
3.8、在 Acme.BookStore.Application.Contracts 层下创建 BookDto 类及CreateUpdateBookDto类型,并使用 AutoMapper 将 Book 实体转成 BookDto 对象,将CreateUpdateBookDto对象转成Book实体的映射
3.9、创建 IBookAppService 接口 及它的实现类 BookAppService
3.10、设置 Acme.BookStore.HttpApi.Host 为启动项目,并修改它的 appsettings.json 文件并运行
3.10.1、设置 appsettings.json 设置方式同 3.7.4
3.10.2 运行项目
四、ABP分层
4.1、Domain
4.2、Application
4.3、Infrastructure
4.4、HTTP
4.5、Web

 

  • 选择 Acme.BookStore.EntityFrameworkCore.DbMigrations 作为默认项目并使用 Add-Migraction 命令迁移项目 成功后会创建一个迁移类
Abp VNext 入门——让ABP跑起来
一、Abp 简介
二、项目创建
三、开发教程
3.1、在 Acme.BookStore.Domain.Share 层下创建 BookType 枚举
3.2、在 Acme.BookStore.Domain 层下创建Book实体
3.3、在 Acme.BookStore.EntityFrameworkCore 层下的 BookStoreDbContext 类中将 Book 实体加入
3.4、将 Book 实体映射到数据库表中
3.5、数据迁移
3.6、添加种子数据(可选)
3.7、更新数据库
3.7.1、视图 —> SQL Server对象资源管理器
3.7.2、创建数据库 BootStore
3.7.3、获取连接字符串
3.7.4、更改 appsettings.json ,将上一步复制的数据库连接字符串替换到 ConnectionString->Default 的 值中
3.7.5、F5运行项目
3.8、在 Acme.BookStore.Application.Contracts 层下创建 BookDto 类及CreateUpdateBookDto类型,并使用 AutoMapper 将 Book 实体转成 BookDto 对象,将CreateUpdateBookDto对象转成Book实体的映射
3.9、创建 IBookAppService 接口 及它的实现类 BookAppService
3.10、设置 Acme.BookStore.HttpApi.Host 为启动项目,并修改它的 appsettings.json 文件并运行
3.10.1、设置 appsettings.json 设置方式同 3.7.4
3.10.2 运行项目
四、ABP分层
4.1、Domain
4.2、Application
4.3、Infrastructure
4.4、HTTP
4.5、Web

 

Abp VNext 入门——让ABP跑起来
一、Abp 简介
二、项目创建
三、开发教程
3.1、在 Acme.BookStore.Domain.Share 层下创建 BookType 枚举
3.2、在 Acme.BookStore.Domain 层下创建Book实体
3.3、在 Acme.BookStore.EntityFrameworkCore 层下的 BookStoreDbContext 类中将 Book 实体加入
3.4、将 Book 实体映射到数据库表中
3.5、数据迁移
3.6、添加种子数据(可选)
3.7、更新数据库
3.7.1、视图 —> SQL Server对象资源管理器
3.7.2、创建数据库 BootStore
3.7.3、获取连接字符串
3.7.4、更改 appsettings.json ,将上一步复制的数据库连接字符串替换到 ConnectionString->Default 的 值中
3.7.5、F5运行项目
3.8、在 Acme.BookStore.Application.Contracts 层下创建 BookDto 类及CreateUpdateBookDto类型,并使用 AutoMapper 将 Book 实体转成 BookDto 对象,将CreateUpdateBookDto对象转成Book实体的映射
3.9、创建 IBookAppService 接口 及它的实现类 BookAppService
3.10、设置 Acme.BookStore.HttpApi.Host 为启动项目,并修改它的 appsettings.json 文件并运行
3.10.1、设置 appsettings.json 设置方式同 3.7.4
3.10.2 运行项目
四、ABP分层
4.1、Domain
4.2、Application
4.3、Infrastructure
4.4、HTTP
4.5、Web

 

3.6、添加种子数据(可选)

在 Acme.BookStore.Domain 层下创建 BookStoreDataSeederContributor 类

public class BookStoreDataSeederContributor : IDataSeedContributor, ITransientDependency
    {
        private readonly IRepository<Book, Guid> _bookRepository;
        public BookStoreDataSeederContributor(IRepository<Book, Guid> bookRepository)
        {
            _bookRepository = bookRepository;
        }

        public async Task SeedAsync(DataSeedContext context)
        {
            if (await _bookRepository.GetCountAsync() <= 0)
            {
                await _bookRepository.InsertAsync(new Book
                {
                    Name = "1984",
                    Type = BookType.Dystopia,
                    PublishDate = new DateTime(1949, 6, 8),
                    Price = 19.84f
                },
                autoSave: true);
                await _bookRepository.InsertAsync(
                    new Book
                    {
                        Name = "The Hitchhiker's Guide to the Galaxy",
                        Type = BookType.ScienceFiction,
                        PublishDate = new DateTime(1995, 9, 27),
                        Price = 42.0f
                    },
                    autoSave: true
                );
            }
        }
    }

3.7、更新数据库

将 Acme.BookStore.DbMigrator 设为启动项目,并更改它下面的 appsettings.json 文件

更改 appsettings.json 文件中的数据库连接字符串(这里我使用VS自带的SqlServer数据库)。

3.7.1、视图 —> SQL Server对象资源管理器

Abp VNext 入门——让ABP跑起来
一、Abp 简介
二、项目创建
三、开发教程
3.1、在 Acme.BookStore.Domain.Share 层下创建 BookType 枚举
3.2、在 Acme.BookStore.Domain 层下创建Book实体
3.3、在 Acme.BookStore.EntityFrameworkCore 层下的 BookStoreDbContext 类中将 Book 实体加入
3.4、将 Book 实体映射到数据库表中
3.5、数据迁移
3.6、添加种子数据(可选)
3.7、更新数据库
3.7.1、视图 —> SQL Server对象资源管理器
3.7.2、创建数据库 BootStore
3.7.3、获取连接字符串
3.7.4、更改 appsettings.json ,将上一步复制的数据库连接字符串替换到 ConnectionString->Default 的 值中
3.7.5、F5运行项目
3.8、在 Acme.BookStore.Application.Contracts 层下创建 BookDto 类及CreateUpdateBookDto类型,并使用 AutoMapper 将 Book 实体转成 BookDto 对象,将CreateUpdateBookDto对象转成Book实体的映射
3.9、创建 IBookAppService 接口 及它的实现类 BookAppService
3.10、设置 Acme.BookStore.HttpApi.Host 为启动项目,并修改它的 appsettings.json 文件并运行
3.10.1、设置 appsettings.json 设置方式同 3.7.4
3.10.2 运行项目
四、ABP分层
4.1、Domain
4.2、Application
4.3、Infrastructure
4.4、HTTP
4.5、Web

 

3.7.2、创建数据库 BootStore

Abp VNext 入门——让ABP跑起来
一、Abp 简介
二、项目创建
三、开发教程
3.1、在 Acme.BookStore.Domain.Share 层下创建 BookType 枚举
3.2、在 Acme.BookStore.Domain 层下创建Book实体
3.3、在 Acme.BookStore.EntityFrameworkCore 层下的 BookStoreDbContext 类中将 Book 实体加入
3.4、将 Book 实体映射到数据库表中
3.5、数据迁移
3.6、添加种子数据(可选)
3.7、更新数据库
3.7.1、视图 —> SQL Server对象资源管理器
3.7.2、创建数据库 BootStore
3.7.3、获取连接字符串
3.7.4、更改 appsettings.json ,将上一步复制的数据库连接字符串替换到 ConnectionString->Default 的 值中
3.7.5、F5运行项目
3.8、在 Acme.BookStore.Application.Contracts 层下创建 BookDto 类及CreateUpdateBookDto类型,并使用 AutoMapper 将 Book 实体转成 BookDto 对象,将CreateUpdateBookDto对象转成Book实体的映射
3.9、创建 IBookAppService 接口 及它的实现类 BookAppService
3.10、设置 Acme.BookStore.HttpApi.Host 为启动项目,并修改它的 appsettings.json 文件并运行
3.10.1、设置 appsettings.json 设置方式同 3.7.4
3.10.2 运行项目
四、ABP分层
4.1、Domain
4.2、Application
4.3、Infrastructure
4.4、HTTP
4.5、Web

 

Abp VNext 入门——让ABP跑起来
一、Abp 简介
二、项目创建
三、开发教程
3.1、在 Acme.BookStore.Domain.Share 层下创建 BookType 枚举
3.2、在 Acme.BookStore.Domain 层下创建Book实体
3.3、在 Acme.BookStore.EntityFrameworkCore 层下的 BookStoreDbContext 类中将 Book 实体加入
3.4、将 Book 实体映射到数据库表中
3.5、数据迁移
3.6、添加种子数据(可选)
3.7、更新数据库
3.7.1、视图 —> SQL Server对象资源管理器
3.7.2、创建数据库 BootStore
3.7.3、获取连接字符串
3.7.4、更改 appsettings.json ,将上一步复制的数据库连接字符串替换到 ConnectionString->Default 的 值中
3.7.5、F5运行项目
3.8、在 Acme.BookStore.Application.Contracts 层下创建 BookDto 类及CreateUpdateBookDto类型,并使用 AutoMapper 将 Book 实体转成 BookDto 对象,将CreateUpdateBookDto对象转成Book实体的映射
3.9、创建 IBookAppService 接口 及它的实现类 BookAppService
3.10、设置 Acme.BookStore.HttpApi.Host 为启动项目,并修改它的 appsettings.json 文件并运行
3.10.1、设置 appsettings.json 设置方式同 3.7.4
3.10.2 运行项目
四、ABP分层
4.1、Domain
4.2、Application
4.3、Infrastructure
4.4、HTTP
4.5、Web

 

3.7.3、获取连接字符串

 

Abp VNext 入门——让ABP跑起来
一、Abp 简介
二、项目创建
三、开发教程
3.1、在 Acme.BookStore.Domain.Share 层下创建 BookType 枚举
3.2、在 Acme.BookStore.Domain 层下创建Book实体
3.3、在 Acme.BookStore.EntityFrameworkCore 层下的 BookStoreDbContext 类中将 Book 实体加入
3.4、将 Book 实体映射到数据库表中
3.5、数据迁移
3.6、添加种子数据(可选)
3.7、更新数据库
3.7.1、视图 —> SQL Server对象资源管理器
3.7.2、创建数据库 BootStore
3.7.3、获取连接字符串
3.7.4、更改 appsettings.json ,将上一步复制的数据库连接字符串替换到 ConnectionString->Default 的 值中
3.7.5、F5运行项目
3.8、在 Acme.BookStore.Application.Contracts 层下创建 BookDto 类及CreateUpdateBookDto类型,并使用 AutoMapper 将 Book 实体转成 BookDto 对象,将CreateUpdateBookDto对象转成Book实体的映射
3.9、创建 IBookAppService 接口 及它的实现类 BookAppService
3.10、设置 Acme.BookStore.HttpApi.Host 为启动项目,并修改它的 appsettings.json 文件并运行
3.10.1、设置 appsettings.json 设置方式同 3.7.4
3.10.2 运行项目
四、ABP分层
4.1、Domain
4.2、Application
4.3、Infrastructure
4.4、HTTP
4.5、Web

 

Abp VNext 入门——让ABP跑起来
一、Abp 简介
二、项目创建
三、开发教程
3.1、在 Acme.BookStore.Domain.Share 层下创建 BookType 枚举
3.2、在 Acme.BookStore.Domain 层下创建Book实体
3.3、在 Acme.BookStore.EntityFrameworkCore 层下的 BookStoreDbContext 类中将 Book 实体加入
3.4、将 Book 实体映射到数据库表中
3.5、数据迁移
3.6、添加种子数据(可选)
3.7、更新数据库
3.7.1、视图 —> SQL Server对象资源管理器
3.7.2、创建数据库 BootStore
3.7.3、获取连接字符串
3.7.4、更改 appsettings.json ,将上一步复制的数据库连接字符串替换到 ConnectionString->Default 的 值中
3.7.5、F5运行项目
3.8、在 Acme.BookStore.Application.Contracts 层下创建 BookDto 类及CreateUpdateBookDto类型,并使用 AutoMapper 将 Book 实体转成 BookDto 对象,将CreateUpdateBookDto对象转成Book实体的映射
3.9、创建 IBookAppService 接口 及它的实现类 BookAppService
3.10、设置 Acme.BookStore.HttpApi.Host 为启动项目,并修改它的 appsettings.json 文件并运行
3.10.1、设置 appsettings.json 设置方式同 3.7.4
3.10.2 运行项目
四、ABP分层
4.1、Domain
4.2、Application
4.3、Infrastructure
4.4、HTTP
4.5、Web

 

3.7.4、更改 appsettings.json ,将上一步复制的数据库连接字符串替换到 ConnectionString->Default 的 值中

 

Abp VNext 入门——让ABP跑起来
一、Abp 简介
二、项目创建
三、开发教程
3.1、在 Acme.BookStore.Domain.Share 层下创建 BookType 枚举
3.2、在 Acme.BookStore.Domain 层下创建Book实体
3.3、在 Acme.BookStore.EntityFrameworkCore 层下的 BookStoreDbContext 类中将 Book 实体加入
3.4、将 Book 实体映射到数据库表中
3.5、数据迁移
3.6、添加种子数据(可选)
3.7、更新数据库
3.7.1、视图 —> SQL Server对象资源管理器
3.7.2、创建数据库 BootStore
3.7.3、获取连接字符串
3.7.4、更改 appsettings.json ,将上一步复制的数据库连接字符串替换到 ConnectionString->Default 的 值中
3.7.5、F5运行项目
3.8、在 Acme.BookStore.Application.Contracts 层下创建 BookDto 类及CreateUpdateBookDto类型,并使用 AutoMapper 将 Book 实体转成 BookDto 对象,将CreateUpdateBookDto对象转成Book实体的映射
3.9、创建 IBookAppService 接口 及它的实现类 BookAppService
3.10、设置 Acme.BookStore.HttpApi.Host 为启动项目,并修改它的 appsettings.json 文件并运行
3.10.1、设置 appsettings.json 设置方式同 3.7.4
3.10.2 运行项目
四、ABP分层
4.1、Domain
4.2、Application
4.3、Infrastructure
4.4、HTTP
4.5、Web

 

3.7.5、F5运行项目

 

Abp VNext 入门——让ABP跑起来
一、Abp 简介
二、项目创建
三、开发教程
3.1、在 Acme.BookStore.Domain.Share 层下创建 BookType 枚举
3.2、在 Acme.BookStore.Domain 层下创建Book实体
3.3、在 Acme.BookStore.EntityFrameworkCore 层下的 BookStoreDbContext 类中将 Book 实体加入
3.4、将 Book 实体映射到数据库表中
3.5、数据迁移
3.6、添加种子数据(可选)
3.7、更新数据库
3.7.1、视图 —> SQL Server对象资源管理器
3.7.2、创建数据库 BootStore
3.7.3、获取连接字符串
3.7.4、更改 appsettings.json ,将上一步复制的数据库连接字符串替换到 ConnectionString->Default 的 值中
3.7.5、F5运行项目
3.8、在 Acme.BookStore.Application.Contracts 层下创建 BookDto 类及CreateUpdateBookDto类型,并使用 AutoMapper 将 Book 实体转成 BookDto 对象,将CreateUpdateBookDto对象转成Book实体的映射
3.9、创建 IBookAppService 接口 及它的实现类 BookAppService
3.10、设置 Acme.BookStore.HttpApi.Host 为启动项目,并修改它的 appsettings.json 文件并运行
3.10.1、设置 appsettings.json 设置方式同 3.7.4
3.10.2 运行项目
四、ABP分层
4.1、Domain
4.2、Application
4.3、Infrastructure
4.4、HTTP
4.5、Web

 

3.8、在 Acme.BookStore.Application.Contracts 层下创建 BookDto 类及CreateUpdateBookDto类型,并使用 AutoMapper 将 Book 实体转成 BookDto 对象,将CreateUpdateBookDto对象转成Book实体的映射

public class BookDto : AuditedEntityDto<Guid>
    {
        public string Name { get; set; }

        public BookType Type { get; set; }

        public DateTime PublishDate { get; set; }

        public float Price { get; set; }
    }

public class CreateUpdateBookDto
    {
        [Required]
        [StringLength(128)]
        public string Name { get; set; }

        [Required]
        public BookType Type { get; set; } = BookType.Undefined;

        [Required]
        [DataType(DataType.Date)]
        public DateTime PublishDate { get; set; } = DateTime.Now;

        [Required]
        public float Price { get; set; }
    }

在 Acme.BookStore.Application 层下的 BookStoreApplicationAutoMapperProfile 类中将 Book 实体转成 BookDto 对象

namespace Acme.BookStore
{
    public class BookStoreApplicationAutoMapperProfile : Profile
    {
        public BookStoreApplicationAutoMapperProfile()
        {
            /* You can configure your AutoMapper mapping configuration here.
             * Alternatively, you can split your mapping configurations
             * into multiple profile classes for a better organization. */
            CreateMap<Book, BookDto>();
            CreateMap<CreateUpdateBookDto, Book>();
        }
    }
}

3.9、创建 IBookAppService 接口 及它的实现类 BookAppService

在 Acme.BookStore.Application.Contracts 项目下 添加 IBookAppService 接口

namespace Acme.BookStore
{
    public interface IBookAppService :
        ICrudAppService<//定义CRUD方法
            BookDto,//用来展示
            Guid,//主键类型
            PagedAndSortedResultRequestDto,//用于分页和排序
            CreateUpdateBookDto,//用于创建
            CreateUpdateBookDto//用于更新
            >
    {

    }
}

在 Acme.BookStore.Application 项目下添加 BookAppService 类

namespace Acme.BookStore
{
    public class BookAppService :
        CrudAppService<
            Book,
            BookDto,
            Guid,
            PagedAndSortedResultRequestDto,
            CreateUpdateBookDto,
            CreateUpdateBookDto>, IBookAppService
    {
        public BookAppService(IRepository<Book, Guid> repository)
            : base(repository)
        {

        }
    }
}

3.10、设置 Acme.BookStore.HttpApi.Host 为启动项目,并修改它的 appsettings.json 文件并运行

3.10.1、设置 appsettings.json 设置方式同 3.7.4

3.10.2 运行项目

 

Abp VNext 入门——让ABP跑起来
一、Abp 简介
二、项目创建
三、开发教程
3.1、在 Acme.BookStore.Domain.Share 层下创建 BookType 枚举
3.2、在 Acme.BookStore.Domain 层下创建Book实体
3.3、在 Acme.BookStore.EntityFrameworkCore 层下的 BookStoreDbContext 类中将 Book 实体加入
3.4、将 Book 实体映射到数据库表中
3.5、数据迁移
3.6、添加种子数据(可选)
3.7、更新数据库
3.7.1、视图 —> SQL Server对象资源管理器
3.7.2、创建数据库 BootStore
3.7.3、获取连接字符串
3.7.4、更改 appsettings.json ,将上一步复制的数据库连接字符串替换到 ConnectionString->Default 的 值中
3.7.5、F5运行项目
3.8、在 Acme.BookStore.Application.Contracts 层下创建 BookDto 类及CreateUpdateBookDto类型,并使用 AutoMapper 将 Book 实体转成 BookDto 对象,将CreateUpdateBookDto对象转成Book实体的映射
3.9、创建 IBookAppService 接口 及它的实现类 BookAppService
3.10、设置 Acme.BookStore.HttpApi.Host 为启动项目,并修改它的 appsettings.json 文件并运行
3.10.1、设置 appsettings.json 设置方式同 3.7.4
3.10.2 运行项目
四、ABP分层
4.1、Domain
4.2、Application
4.3、Infrastructure
4.4、HTTP
4.5、Web

 

是不是非常奇怪,通常我们需要创建Controller以将应用程序服务公开为HTTP API端点。而ABP可以自动按照约定(惯例)将应用程序服务配置为MVC API控制器并使用 Swagger 来管理API文档。是不是很酷,我们没有编写任何代码来创建API控制器,但是现在我们有了一个可以正常使用的REST API!

四、ABP分层

 

Abp VNext 入门——让ABP跑起来
一、Abp 简介
二、项目创建
三、开发教程
3.1、在 Acme.BookStore.Domain.Share 层下创建 BookType 枚举
3.2、在 Acme.BookStore.Domain 层下创建Book实体
3.3、在 Acme.BookStore.EntityFrameworkCore 层下的 BookStoreDbContext 类中将 Book 实体加入
3.4、将 Book 实体映射到数据库表中
3.5、数据迁移
3.6、添加种子数据(可选)
3.7、更新数据库
3.7.1、视图 —> SQL Server对象资源管理器
3.7.2、创建数据库 BootStore
3.7.3、获取连接字符串
3.7.4、更改 appsettings.json ,将上一步复制的数据库连接字符串替换到 ConnectionString->Default 的 值中
3.7.5、F5运行项目
3.8、在 Acme.BookStore.Application.Contracts 层下创建 BookDto 类及CreateUpdateBookDto类型,并使用 AutoMapper 将 Book 实体转成 BookDto 对象,将CreateUpdateBookDto对象转成Book实体的映射
3.9、创建 IBookAppService 接口 及它的实现类 BookAppService
3.10、设置 Acme.BookStore.HttpApi.Host 为启动项目,并修改它的 appsettings.json 文件并运行
3.10.1、设置 appsettings.json 设置方式同 3.7.4
3.10.2 运行项目
四、ABP分层
4.1、Domain
4.2、Application
4.3、Infrastructure
4.4、HTTP
4.5、Web

 

4.1、Domain

Domain(领域) 划分为两个项目,Domain.Share 和 Domain

Domain.Share :包含常量,枚举和其他类型, 它不能包含实体,存储库,域服务或任何其他业务对象. 可以安全地与模块中的所有层使用. 此包也可以与第三方客户端使用.

Domain: 包含实体, 仓储接口,领域服务接口及其实现和其他领域对象. Domain 包依赖于 Domain.Shared 包.

4.2、Application

Application(应用服务) 划分为两个项目 Application.Contracts 和 Application

Application.Contracts:包含应用服务接口和相关的数据传输对象(DTO). Application contract 包依赖于 Domain.Shared 包

Application:包含应用服务实现. Application 包依赖于 Domain 包和 Application.Contracts 包

4.3、Infrastructure

Infrastructure(基础设施) 为每个orm/数据库集成创建一个独立的集成包, 比如Entity Framework Core 和 MongoDB.

4.4、HTTP

  • 为模块开发REST风格的HTTP API,
  • 为每个应用服务创建一个Controller (通常通过实现其接口). 这些控制器使用应用服务接口来委托操作. 它根据需要配置路由, HTTP方法和其他与Web相关的东西.
  • HTTP API 包只依赖于 Application.Contracts 包. 不要依赖 Application 包,
  • 创建一个为HTTP API包提供客户端服务的HTTP API Client包,这些客户端服务将应用服务接口实现远程端点的客户端.HTTP API Client 包仅依赖于 Application.Contracts 包 使用ABP框架提供的动态代理HTTP C#客户端的功能.

4.5、Web

包含页面,视图,脚本,样式,图像和其他UI组件,Web 包仅依赖于 HttpApi 包


ABP框架遵循DDD原则和模式去实现分层应用程序模型,该模型由四个基本层组成:

  • 表示层: 为用户提供接口. 使用应用层实现与用户交互.
  • 应用层: 表示层与领域层的中介,编排业务对象执行特定的应用程序任务. 使用应用程序逻辑实现用例.
  • 领域层: 包含业务对象以及业务规则. 是应用程序的核心.
  • 基础设施层: 提供通用的技术功能,支持更高的层,主要使用第三方类库.