前言
基於官方教程,前前后后走了N遍。好多地方不清楚,為什么會有這效果,有一堆的問號。哪些是必須的?哪些是不必須的?
經過N長時間的研究,自己也搭建多無數個精簡的Abp解決方案。在這過程中,出現一堆莫名其妙的問題。
有幸,最終摸索出可以通過Swagger可以調用數據庫的項目。所以決定寫下操作過程,加以鞏固,並共勉之。
創建解決方案及項目
創建名為 Acme.BookStore 的新解決方案。基於Abp官方教程中領域分層,分別創建以下項目:
- .Net Core類庫項目
Acme.BookStore.DomainAcme.BookStore.Domain.SharedAcme.BookStore.ApplicationAcme.BookStore.Application.ContractsAcme.BookStore.EntityFrameworkCoreAcme.BookStore.EntityFrameworkCore.DbMigrations
- Asp.Net Core Web應用程序
Acme.BookStore.WebApi(空白模版)
添加項目引用
Acme.BookStore.ApplicationAcme.BookStore.DomainAcme.BookStore.Application.Contracts
Acme.BookStore.Application.ContractsAcme.BookStore.Domain.Shared
Acme.BookStore.DomainAcme.BookStore.Domain.Shared
Acme.BookStore.EntityFrameworkCoreAcme.BookStore.Domain
Acme.BookStore.EntityFrameworkCore.DbMigrationsAcme.BookStore.EntityFrameworkCore
Acme.BookStore.WebApiAcme.BookStore.Application.ApplicationAcme.BookStore.EntityFrameworkCore.DbMigrations
添加程序包引用
Acme.BookStore.ApplicationVolo.Abp.Ddd.ApplicationVolo.Abp.AutoMapper
Acme.BookStore.Application.ContractsVolo.Abp.Ddd.Application.Contracts
Acme.BookStore.DomainVolo.Abp.Ddd.Domain
Acme.BookStore.Domain.SharedVolo.Abp.Core
Acme.BookStore.EntityFrameworkCoreVolo.Abp.EntityFrameworkCore.SqlServer
Acme.BookStore.EntityFrameworkCore.DbMigrationsMicrosoft.EntityFrameworkCore.Tools
Acme.BookStore.WebApiSwashbuckle.AspNetCoreVolo.Abp.AspNetCore.MvcVolo.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.ApplicationBookStoreApplicationModule.cs
Acme.BookStore.Application.ContractsBookStoreApplicationContractsModule.cs
Acme.BookStore.DomainBookStoreDomainModule.cs
Acme.BookStore.Domain.SharedBookStoreDomainSharedModule.cs
Acme.BookStore.EntityFrameworkCoreBookStoreEntityFrameworkCoreModule.cs
Acme.BookStore.EntityFrameworkCore.DbMigrationsBookStoreEntityFrameworkCoreDbMigrationsModule.cs
Acme.BookStore.WebApiBookStoreWebApiModule.cs
各個項目中創建Module類完后,都繼承AbpModule。
