Abp VNext 入门——让ABP跑起来
因好多群友@我说 ,ABP他们简单的了解了下,按照官方的教程一路下来跑不起来(倒在了入门的门口),才有了此文。
此文结合官方文档,一步一步带领大家让ABP跑起来(跨过门口)。
建议大家一步一步实际动手操作下
一、Abp 简介
ABP是用于创建现代Web应用程序的完整架构和强大的基础设施! 遵循最佳实践和约定,为你提供SOLID开发经验.
ABP 是一个开源应用程序框架,专注于基于ASP.NET Core的Web应用程序开发,但也支持开发其他类型的应用程序.
二、项目创建
作为入门,这里就不使用CLI创建了,使用在线创建项目,在线地址:https://abp.io/get-started,为了演示,项目名称就用官方的Acme.BookStore

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

下面我将带领大家搭建一个简单的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)

- 选择 Acme.BookStore.EntityFrameworkCore.DbMigrations 作为默认项目并使用 Add-Migraction 命令迁移项目 成功后会创建一个迁移类


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对象资源管理器

3.7.2、创建数据库 BootStore

&nb.........
本文转载自:http://www.shaoqun.com/a/501374.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)