前言
基於官方教程,前前后后走了N遍。好多地方不清楚,為什么會有這效果,有一堆的問號。哪些是必須的?哪些是不必須的?
經過N長時間的研究,自己也搭建多無數個精簡的Abp解決方案。在這過程中,出現一堆莫名其妙的問題。
有幸,最終摸索出可以通過Swagger可以調用數據庫的項目。所以決定寫下操作過程,加以鞏固,並共勉之。
創建解決方案及項目
創建名為 Acme.BookStore
的新解決方案。基於Abp官方教程中領域分層,分別創建以下項目:
- .Net Core類庫項目
Acme.BookStore.Domain
Acme.BookStore.Domain.Shared
Acme.BookStore.Application
Acme.BookStore.Application.Contracts
Acme.BookStore.EntityFrameworkCore
Acme.BookStore.EntityFrameworkCore.DbMigrations
- Asp.Net Core Web應用程序
Acme.BookStore.WebApi
(空白模版)
添加項目引用
Acme.BookStore.Application
Acme.BookStore.Domain
Acme.BookStore.Application.Contracts
Acme.BookStore.Application.Contracts
Acme.BookStore.Domain.Shared
Acme.BookStore.Domain
Acme.BookStore.Domain.Shared
Acme.BookStore.EntityFrameworkCore
Acme.BookStore.Domain
Acme.BookStore.EntityFrameworkCore.DbMigrations
Acme.BookStore.EntityFrameworkCore
Acme.BookStore.WebApi
Acme.BookStore.Application.Application
Acme.BookStore.EntityFrameworkCore.DbMigrations
添加程序包引用
Acme.BookStore.Application
Volo.Abp.Ddd.Application
Volo.Abp.AutoMapper
Acme.BookStore.Application.Contracts
Volo.Abp.Ddd.Application.Contracts
Acme.BookStore.Domain
Volo.Abp.Ddd.Domain
Acme.BookStore.Domain.Shared
Volo.Abp.Core
Acme.BookStore.EntityFrameworkCore
Volo.Abp.EntityFrameworkCore.SqlServer
Acme.BookStore.EntityFrameworkCore.DbMigrations
Microsoft.EntityFrameworkCore.Tools
Acme.BookStore.WebApi
Swashbuckle.AspNetCore
Volo.Abp.AspNetCore.Mvc
Volo.Abp.Autofac
快速項目、程序包引用
- 雙擊
Acme.BookStore.Application
代碼替換:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Volo.Abp.AutoMapper" Version="3.2.1" />
<PackageReference Include="Volo.Abp.Ddd.Application" Version="3.2.1" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Acme.BookStore.Application.Contracts\Acme.BookStore.Application.Contracts.csproj" />
<ProjectReference Include="..\Acme.BookStore.Domain\Acme.BookStore.Domain.csproj" />
</ItemGroup>
</Project>
- 雙擊
Acme.BookStore.Application.Contracts
代碼替換:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Volo.Abp.Ddd.Application.Contracts" Version="3.2.1" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Acme.BookStore.Domain.Shared\Acme.BookStore.Domain.Shared.csproj" />
</ItemGroup>
</Project>
- 雙擊
Acme.BookStore.Domain
代碼替換:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Volo.Abp.Ddd.Domain" Version="3.2.1" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Acme.BookStore.Domain.Shared\Acme.BookStore.Domain.Shared.csproj" />
</ItemGroup>
</Project>
- 雙擊
Acme.BookStore.Domain.Shared
代碼替換:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Volo.Abp.Core" Version="3.2.1" />
</ItemGroup>
</Project>
- 雙擊
Acme.BookStore.EntityFrameworkCore
代碼替換:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Volo.Abp.EntityFrameworkCore.SqlServer" Version="3.2.1" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Acme.BookStore.Domain\Acme.BookStore.Domain.csproj" />
</ItemGroup>
</Project>
- 雙擊
Acme.BookStore.EntityFrameworkCore.DbMigrations
代碼替換:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="3.1.8">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Acme.BookStore.EntityFrameworkCore\Acme.BookStore.EntityFrameworkCore.csproj" />
</ItemGroup>
</Project>
- 雙擊
Acme.BookStore.WebApi
代碼替換:
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Swashbuckle.AspNetCore" Version="5.6.3" />
<PackageReference Include="Volo.Abp.AspNetCore.Mvc" Version="3.2.1" />
<PackageReference Include="Volo.Abp.Autofac" Version="3.2.1" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Acme.BookStore.Application\Acme.BookStore.Application.csproj" />
<ProjectReference Include="..\Acme.BookStore.EntityFrameworkCore.DbMigrations\Acme.BookStore.EntityFrameworkCore.DbMigrations.csproj" />
</ItemGroup>
</Project>
創建Module類
分別對創建的項目,統一添加以Module
結尾類名稱(可以重命名Class1.cs)
Acme.BookStore.Application
BookStoreApplicationModule.cs
Acme.BookStore.Application.Contracts
BookStoreApplicationContractsModule.cs
Acme.BookStore.Domain
BookStoreDomainModule.cs
Acme.BookStore.Domain.Shared
BookStoreDomainSharedModule.cs
Acme.BookStore.EntityFrameworkCore
BookStoreEntityFrameworkCoreModule.cs
Acme.BookStore.EntityFrameworkCore.DbMigrations
BookStoreEntityFrameworkCoreDbMigrationsModule.cs
Acme.BookStore.WebApi
BookStoreWebApiModule.cs
各個項目中創建Module類完后,都繼承AbpModule
。