使用Volo.Abp读取Sqlite表中数据

书接上文:Abp 从空白的WebApplication中添加EntityFrameworkCore生成数据库

开发环境:.NET6、Volo.Abp

数据库:Sqlite

说明:纯属个人强行入门。我个人觉得按照官网的操作不舒服,所以自己研究着来,请读者根据自己的需要进行参考。我能保证的是按照文章操作能够得到和我一样的结果。

1、在应用层中添加项目DemoApplication 项目目录如下图所示:

1.1、项目中引入包情况如下:

XML 复制代码
<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>net6.0</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Volo.Abp.AspNetCore" Version="6.0.3" />
    <PackageReference Include="Volo.Abp.Autofac" Version="6.0.3" />
    <PackageReference Include="Volo.Abp.AutoMapper" Version="6.0.3" />
    <PackageReference Include="Volo.Abp.Ddd.Application" Version="6.0.3" />
  </ItemGroup>

  <ItemGroup>
    <ProjectReference Include="..\DemoEntityFrameworkCore\DemoEntityFrameworkCore.csproj" />
  </ItemGroup>

</Project>

1.2、创建DemoApplicationCoreModule类,代码如下:

cs 复制代码
using DemoApplication.Book;
using DemoEntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Volo.Abp.Application;
using Volo.Abp.Autofac;
using Volo.Abp.AutoMapper;
using Volo.Abp.Modularity;

namespace DemoApplication
{
    [DependsOn(typeof(AbpAutoMapperModule), typeof(AbpAutofacModule))]
    public class DemoApplicationCoreModule:AbpModule
    {
        public override void ConfigureServices(ServiceConfigurationContext context)
        {           
            Configure<AbpAutoMapperOptions>(options =>
            {
                options.AddMaps<DemoApplicationCoreModule>();
            });
        }
    }
}

1.3、创建类BookInfoAppService,代码如下:

cs 复制代码
using DemoDomain.Book;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Volo.Abp.Application.Services;
using Volo.Abp.Autofac;
using Volo.Abp.DependencyInjection;
using Volo.Abp.Domain.Repositories;
using Volo.Abp.Modularity;

namespace DemoApplication.Book
{
    [DependsOn(typeof(AbpAutofacModule))]
    public class BookInfoAppService:ApplicationService,ITransientDependency
    {
        private readonly IRepository<BookInfo, Guid> _bookInfoRepository;

        public BookInfoAppService(IRepository<BookInfo, Guid> bookInfoRepository)
        {
            _bookInfoRepository = bookInfoRepository;
        }

        public List<BookInfo> Get()
        {
           long count= _bookInfoRepository.GetCountAsync().Result;

           List<BookInfo> listBookInfos= _bookInfoRepository.GetListAsync().Result;

           return listBookInfos;
        }
    }
}

1.4、目录中BookInfoDTO类目前没有使用到,也把代码粘上来吧:

cs 复制代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace DemoApplication.Book.Dto
{
    public class BookInfoDTO
    {
        public string Name { get; set; }
        public string Description { get; set; }
    }
}

1.5、 目录中ApplicationAutoMapperProfile类目前没有使用到,也把代码粘上来吧:

cs 复制代码
using AutoMapper;
using DemoApplication.Book.Dto;
using DemoDomain.Book;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Volo.Abp.Autofac;
using Volo.Abp.AutoMapper;
using Volo.Abp.Modularity;

namespace DemoApplication
{
    [DependsOn(typeof(AbpAutofacModule))]
    public class ApplicationAutoMapperProfile:Profile
    {
        public ApplicationAutoMapperProfile()
        {
            //创建一个实体的映射
            CreateMap<BookInfo, BookInfoDTO>(); 
        }
    }
}

2、对于用户接口层要做的修改。

2.1、修改DemoAbpModule类中代码,具体代码如下:

cs 复制代码
using Volo.Abp.Modularity;
using Volo.Abp.Autofac;
using Volo.Abp.AspNetCore;
using Volo.Abp;
using DemoApplication;
using DemoApplication.Book;
using Volo.Abp.AutoMapper;
using DemoEntityFrameworkCore;
using Microsoft.EntityFrameworkCore;
using Volo.Abp.Auditing;
using Microsoft.Extensions.DependencyInjection.Extensions;
using DemoDomain;

namespace DemoAspNetCoreApplict
{
    [DependsOn(
        typeof(AbpAspNetCoreModule),
        typeof(AbpAutofacModule),
        typeof(DemoDomainAbpModule),
        typeof(DemoEntityFrameworkCroeAbpModule),
        typeof(DemoApplicationCoreModule))]

    public class DemoAbpModule:AbpModule
    {
        public override void PreConfigureServices(ServiceConfigurationContext context)
        {
            base.PreConfigureServices(context);

            var hostingEnviroment = context.Services.GetHostingEnvironment();
            var configuration = context.Services.GetConfiguration();

        }
        public override void OnApplicationInitialization(ApplicationInitializationContext context)
        {         
            var app=context.GetApplicationBuilder();
            var env=context.GetEnvironment();

            if(env.IsDevelopment())
            {
                app.UseExceptionHandler("/Error");
                app.UseHsts();
            }

            app.UseHttpsRedirection();
            app.UseStaticFiles();
            app.UseRouting();
            app.UseEndpoints(endpoints =>
            {
                endpoints.MapControllers();
            });
            app.UseConfiguredEndpoints();
            //app.UseAuthorization();

            base.OnApplicationInitialization(context);
        }

        public override void ConfigureServices(ServiceConfigurationContext context)
        {          
            base.ConfigureServices(context);

            context.Services.AddControllers();

            context.Services.AddDbContext<DemoDbContext>(options =>
            {
                options.UseSqlite("Data Source=E:\\ABP\\demo.db;");
            });

            Configure<AbpAutoMapperOptions>(options =>
            {
                options.AddMaps<DemoApplicationCoreModule>();
            });

            context.Services.Configure<AbpAuditingOptions>(options =>
            {
                options.IsEnabled = true;
            });

        }
    }
}

2.2、注意需要添加依赖对象,不然你会收到意想不到的意外哦。具体如下:

cs 复制代码
        typeof(DemoDomainAbpModule),
        typeof(DemoEntityFrameworkCroeAbpModule),
        typeof(DemoApplicationCoreModule)

2.3、添加一个控制器GetBookInfoController,具体代码如下:

cs 复制代码
using DemoApplication.Book;
using DemoApplication.Book.Dto;
using DemoDomain.Book;
using Microsoft.AspNetCore.Mvc;
using System.Collections.Generic;
using Volo.Abp.AspNetCore.Mvc;

namespace DemoAspNetCoreApplict
{
    [ApiController]
    [Route("api/[controller]/[action]")]
    public class GetBookInfoController: AbpController
    {
        private readonly ILogger<GetBookInfoController> _logger;

        private readonly BookInfoAppService _bookInfoAppService;

        public GetBookInfoController(ILogger<GetBookInfoController> logger, BookInfoAppService bookInfoAppService)
        {
            _logger = logger;
            _bookInfoAppService = bookInfoAppService;
        }

        [HttpGet]
        public IEnumerable<BookInfo> Get()
        {
            List<BookInfo> bookInfo = _bookInfoAppService.Get().ToList();

            return bookInfo;
        }
    }
}

3、具体的可执行代码已上传,想赚点小钱钱喽有需要的请去下载吧。

https://download.csdn.net/download/xingchengaiwei/888151984

4、推广一个云服务器,买服务器的私聊我送源代码呦。

开发云 - 一站式云服务平台

相关推荐
执风挽^1 小时前
Python基础编程题2
开发语言·python·算法·visual studio code
Z9fish2 小时前
sse哈工大C语言编程练习20
c语言·开发语言·算法
萧鼎2 小时前
Python 包管理的“超音速”革命:全面上手 uv 工具链
开发语言·python·uv
Anastasiozzzz2 小时前
Java Lambda 揭秘:从匿名内部类到底层原理的深度解析
java·开发语言
缺点内向2 小时前
C#: 告别繁琐!轻松移除Word文档中的文本与图片水印
c#·自动化·word·.net
刘琦沛在进步2 小时前
【C / C++】引用和函数重载的介绍
c语言·开发语言·c++
机器视觉的发动机3 小时前
AI算力中心的能耗挑战与未来破局之路
开发语言·人工智能·自动化·视觉检测·机器视觉
HyperAI超神经3 小时前
在线教程|DeepSeek-OCR 2公式/表格解析同步改善,以低视觉token成本实现近4%的性能跃迁
开发语言·人工智能·深度学习·神经网络·机器学习·ocr·创业创新
R_.L3 小时前
【QT】常用控件(按钮类控件、显示类控件、输入类控件、多元素控件、容器类控件、布局管理器)
开发语言·qt
喵叔哟3 小时前
06-ASPNETCore-WebAPI开发
服务器·后端·c#