删掉此层所有文件,不要忘了添加模块类,MeowvBlogDomainModule.cs,它依赖AbpIdentityDomainModule模块
using Volo.Abp.Identity; using Volo.Abp.Modularity; namespace Meowv.Blog.Domain { [DependsOn(typeof(AbpIdentityDomainModule))] public class MeowvBlogDomainModule : AbpModule { } }此时上面.Application.Caching中可以将MeowvBlogDomainModule加上了。
//MeowvBlogApplicationCachingModule.cs ... [DependsOn( typeof(AbpCachingModule), typeof(MeowvBlogDomainModule) )] public class MeowvBlogApplicationCachingModule : AbpModule { ... } ... .Domain.Shared.Domain.Shared层相当于.Domain的一个扩展一样,这里放一下项目用到的枚举、公共常量等内容,需要引用我们的.Domain项目
<Project Sdk="Microsoft.NET.Sdk"> <Import Project="..\..\common.props" /> <PropertyGroup> <TargetFramework>netcoreapp3.1</TargetFramework> </PropertyGroup> <ItemGroup> <ProjectReference Include="..\Meowv.Blog.Domain\Meowv.Blog.Domain.csproj" /> </ItemGroup> </Project>还是要新增一个模块类MeowvBlogDomainSharedModule.cs,它依赖AbpIdentityDomainSharedModule模块
//MeowvBlogDomainSharedModule.cs using Volo.Abp.Identity; using Volo.Abp.Modularity; namespace Meowv.Blog.Domain { [DependsOn(typeof(AbpIdentityDomainModule))] public class MeowvBlogDomainModule : AbpModule { } } .EntityFrameworkCore.EntityFrameworkCore层同样的,先删掉默认生成的文件。它主要是集成了EF Core,自定义仓储。详细可以看看abp文档:https://docs.abp.io/zh-Hans/abp/latest/Repositories
它支持多种数据库 MySQL、SqlServer、PostgreSql、Sqlite等,如果你有用到MongoDB,则需要新建一个项目,单独实现。可以看官方文档,有时间可以分享具体方法,本项目用不到。https://docs.abp.io/zh-Hans/abp/latest/MongoDB
为了方便大家,我把以上4种主流数据库都集成到项目中,添加包Volo.Abp.EntityFrameworkCore.MySQL,.PostgreSql、.Sqlite、.SqlServer,同时引用.Domain.Shared项目
//Meowv.Blog.EntityFrameworkCore.csproj <Project Sdk="Microsoft.NET.Sdk"> <Import Project="..\..\common.props" /> <PropertyGroup> <TargetFramework>netcoreapp3.1</TargetFramework> </PropertyGroup> <ItemGroup> <PackageReference Include="Volo.Abp.EntityFrameworkCore.MySQL" Version="2.7.0" /> <PackageReference Include="Volo.Abp.EntityFrameworkCore.PostgreSql" Version="2.7.0" /> <PackageReference Include="Volo.Abp.EntityFrameworkCore.Sqlite" Version="2.7.0" /> <PackageReference Include="Volo.Abp.EntityFrameworkCore.SqlServer" Version="2.7.0" /> <ProjectReference Include="..\Meowv.Blog.Domain.Shared\Meowv.Blog.Domain.Shared.csproj" /> </ItemGroup> </Project>新建一个模块类MeowvBlogFrameworkCoreModule.cs,依赖MeowvBlogDomainModule和数据库模块
//MeowvBlogFrameworkCoreModule.cs using Meowv.Blog.Domain; using Volo.Abp.EntityFrameworkCore; using Volo.Abp.EntityFrameworkCore.MySQL; using Volo.Abp.EntityFrameworkCore.PostgreSql; using Volo.Abp.EntityFrameworkCore.Sqlite; using Volo.Abp.EntityFrameworkCore.SqlServer; using Volo.Abp.Modularity; namespace Meowv.Blog.EntityFrameworkCore { [DependsOn( typeof(MeowvBlogDomainModule), typeof(AbpEntityFrameworkCoreModule), typeof(AbpEntityFrameworkCoreMySQLModule), typeof(AbpEntityFrameworkCoreSqlServerModule), typeof(AbpEntityFrameworkCorePostgreSqlModule), typeof(AbpEntityFrameworkCoreSqliteModule) )] public class MeowvBlogFrameworkCoreModule : AbpModule { public override void ConfigureServices(ServiceConfigurationContext context) { } } } .EntityFrameworkCore.DbMigrations.EntityFrameworkCore.DbMigrations层主要做数据库迁移,用code-first方式创建数据库表,先删掉默认生成的文件,目前还用不上,后面讲。
.ToolKits.ToolKits层是我们手动创建的项目,我主要用它来包装一些扩展方法,公共的工具类。
Swagger登场做.net core开发的,相信Swagger的使用大家应该都很熟悉了,不做过多的介绍,今天只先将其用上看看效果。
我单独为Swagger新建了一个项目Meowv.Blog.Swagger,其实大可不必,直接写在.HttpApi.Hosting中也是一样的。
添加Volo.Abp.AspNetCore和Swashbuckle.AspNetCore包,引用实体层.Domain。
//Meowv.Blog.Swagger.csproj <Project Sdk="Microsoft.NET.Sdk"> <Import Project="..\..\common.props" /> <PropertyGroup> <TargetFramework>netcoreapp3.1</TargetFramework> </PropertyGroup> <ItemGroup> <PackageReference Include="Volo.Abp.AspNetCore" Version="2.7.0" /> <PackageReference Include="Swashbuckle.AspNetCore" Version="5.4.1" /> <ProjectReference Include="..\Meowv.Blog.Domain\Meowv.Blog.Domain.csproj" /> </ItemGroup> </Project>