Abp 从空白的WebApplication中添加EntityFrameworkCore生成数据库

书接上文:Abp 从空白WebApplication开始

开发环境:.NET6、Volo.Abp

数据库:Sqlite

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

1、项目搭建,将项目分为以下几个层

1.1、用户接口层:目前放了空白的WebApplication,理论上不应该这样,先这么放着吧。项目名称DemoAspNetCoreApplict,少了几个字母,哈哈。

1.2、应用层:目前是空的

1.3、领域层:创建库项目,项目名称DemoDomain。

1.4、基础设施层:创建库项目,项目名称DemoEntityFrameworkCore。

2、创建领域层项目,项目目录如下图:

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

<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.Ddd.Domain" Version="6.0.3" /></ItemGroup></Project>


 

2.2、创建文件夹Book,在文件夹Book中添加类BookInfo.cs,代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Volo.Abp.Domain.Entities.Auditing;namespace DemoDomain.Book
{public class BookInfo:FullAuditedAggregateRoot<Guid>{public string Name { get; set; }public string Description { get; set; }}
}

 2.3、添加类DemoDomainAbpModule.cs,代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Volo.Abp.Domain;
using Volo.Abp.Modularity;namespace DemoDomain
{[DependsOn(typeof(AbpDddDomainModule))]public class DemoDomainAbpModule:AbpModule{}
}

 

3、创建基础设施层项目,项目目录请看第一张图:

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

        <Project Sdk="Microsoft.NET.Sdk"><PropertyGroup><TargetFramework>net6.0</TargetFramework><ImplicitUsings>enable</ImplicitUsings><Nullable>enable</Nullable></PropertyGroup><ItemGroup><PackageReference Include="Volo.Abp.AspNetCore.Mvc" Version="6.0.3" /><PackageReference Include="Volo.Abp.EntityFrameworkCore" Version="6.0.3" /><PackageReference Include="Volo.Abp.EntityFrameworkCore.Sqlite" Version="6.0.3" /></ItemGroup><ItemGroup><ProjectReference Include="..\DemoDomain\DemoDomain.csproj" /></ItemGroup></Project>

3.2、添加DemoEntityFrameworkCroeAbpModule.cs类,代码如下:

using DemoDomain;
using Microsoft.Extensions.DependencyInjection;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Volo.Abp.EntityFrameworkCore;
using Volo.Abp.EntityFrameworkCore.Sqlite;
using Volo.Abp.Modularity;namespace DemoEntityFrameworkCore
{[DependsOn(typeof(DemoDomainAbpModule),typeof(AbpEntityFrameworkCoreModule), typeof(AbpEntityFrameworkCoreSqliteModule))]public class DemoEntityFrameworkCroeAbpModule:AbpModule{public override void ConfigureServices(ServiceConfigurationContext context){base.ConfigureServices(context);Configure<AbpDbContextOptions>(opt =>{opt.UseSqlite();});var services = context.Services;services.AddAbpDbContext<DemoDbContext>(options =>{                options.AddDefaultRepositories(true);});}}
}

3.3、添加DemoDbContext.cs类,注意这里的BookInfom目前还未添加代码如下:

using DemoDomain.Book;
using Microsoft.EntityFrameworkCore;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Volo.Abp.Data;
using Volo.Abp.EntityFrameworkCore;namespace DemoEntityFrameworkCore
{[ConnectionStringName("conn_mssql")]public class DemoDbContext : AbpDbContext<DemoDbContext>{public DbSet<BookInfo> BookInfos { get; set; }public DemoDbContext(DbContextOptions<DemoDbContext> options) : base(options){}protected override void OnModelCreating(ModelBuilder modelBuilder){base.OnModelCreating(modelBuilder);}}
}

3.4、以下内容是生成数据库时产生的不用理会:

4、 创建用户接口层项目,项目目录请看第一张图:

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

<Project Sdk="Microsoft.NET.Sdk.Web"><PropertyGroup><TargetFramework>net6.0</TargetFramework><Nullable>enable</Nullable><ImplicitUsings>enable</ImplicitUsings></PropertyGroup><ItemGroup><PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="6.0.26"><PrivateAssets>all</PrivateAssets><IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets></PackageReference><PackageReference Include="Volo.Abp.AspNetCore.Mvc" Version="6.0.3" /><PackageReference Include="Volo.Abp.Autofac" Version="6.0.3" /></ItemGroup><ItemGroup><ProjectReference Include="..\DemoEntityFrameworkCore\DemoEntityFrameworkCore.csproj" /></ItemGroup></Project>

4.2、添加类DemoAbpModule.cs,代码如下:

using Volo.Abp.Modularity;
using Volo.Abp.Autofac;
using Volo.Abp.AspNetCore;
using Volo.Abp;namespace DemoAspNetCoreApplict
{[DependsOn(typeof(AbpAspNetCoreModule),typeof(AbpAutofacModule))]public class DemoAbpModule:AbpModule{public override void OnApplicationInitialization(ApplicationInitializationContext context){//base.OnApplicationInitialization(context);var app=context.GetApplicationBuilder();var env=context.GetEnvironment();if(env.IsDevelopment()){app.UseExceptionHandler("/Error");app.UseHsts();}app.UseHttpsRedirection();app.UseStaticFiles();   app.UseRouting();app.UseConfiguredEndpoints();}}
}

4.3、修改Program.cs类,代码如下:

using DemoAspNetCoreApplict;
using DemoEntityFrameworkCore;
using Microsoft.EntityFrameworkCore;var builder = WebApplication.CreateBuilder(args);
builder.Host.UseAutofac();  //Add this line
builder.Services.ReplaceConfiguration(builder.Configuration);
builder.Services.AddApplication<DemoAbpModule>();
builder.Services.AddDbContext<DemoDbContext>(options =>
{options.UseSqlite("Data Source=E:\\ABP\\demo.db;");
});var app = builder.Build();
app.InitializeApplication();
app.Run();

4.4、修改appsettings.json,内容如下:

{"ConnectionStrings": {"conn_mssql": "Data Source=E:\\ABP\\demo.db;","Default": "Data Source=E:\\ABP\\demo.db;"},"Logging": {"LogLevel": {"Default": "Information","Microsoft": "Warning","Microsoft.Hosting.Lifetime": "Information"}},"AllowedHosts": "*"
}

5、数据迁移操作:

5.1、在E盘创建ABP文件夹,在ABP文件夹中创建demo.db数据库。sqlite数据库如何创建可以参考这个连接SQLite创建数据库 -SQLite教程。

5.2、将DemoAspNetCoreApplict 设置为启动项目,打开程序包管理器控制台,默认项目选择DemoEntityFrameworkCore。

5.3、程序包管理器控制台中输入Add-Migration init。

5.4、程序包管理器控制台中输入Update-Database。

6、问题:

6.1、大家可能注意到我的数据库连接字符串出现了很多次,在DemoAspNetCoreApplict项目中的Program.cs类中有,appsettings.json文件中有;有效的是Program.cs类中的。具体什么情况我还不太明白,有兴趣的大神请帮忙解答一下。

6.2、如果觉得一步步操作太累,还可以直接下载我上传的资源,链接如下:

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/667284.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Ubuntu+GPU搭建Stable-Diffusion教程

【前序】已经安装anaconda 1.git拉取项目到本地 执行git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git 进入项目目录下 cd stable-diffusion-webui/ 2. 安装对应Python依赖包 首先安装pytorch和torchvision&#xff0c;若是GPU环境的用户需要安装与cu…

2024年最新幻兽帕鲁服务器搭建教程

玩转幻兽帕鲁服务器&#xff0c;阿里云推出新手0基础一键部署幻兽帕鲁服务器教程&#xff0c;傻瓜式一键部署&#xff0c;3分钟即可成功创建一台Palworld专属服务器&#xff0c;成本仅需26元&#xff0c;阿里云服务器网aliyunfuwuqi.com分享2024年新版基于阿里云搭建幻兽帕鲁服…

深度解析源码,Spring 如何使用三级缓存解决循环依赖

目录 一. 前言 二. 基础知识 2.1. 什么是循环依赖&#xff1f; 2.2. 三级缓存 2.3. 原理执行流程 三. 源码解读 3.1. 代码入口 3.2. 第一层 3.3. 第二层 3.4. 第三层 3.5. 返回第二层 3.6. 返回第一层 四. 原理深度解读 4.1. 什么要有三级缓存&#xff1f; 4.2.…

【HarmonyOS 4.0 应用开发实战】ArkTS 快速入门

个人名片&#xff1a; &#x1f43c;作者简介&#xff1a;一名大三在校生&#xff0c;喜欢AI编程&#x1f38b; &#x1f43b;‍❄️个人主页&#x1f947;&#xff1a;落798. &#x1f43c;个人WeChat&#xff1a;hmmwx53 &#x1f54a;️系列专栏&#xff1a;&#x1f5bc;️…

python中[[]] * (n)和[[] for _ in range(n)]的区别

1、现象 刷leetcode207的时候碰到一个坑&#xff0c;用[[]] * (n)初始化二维数组&#xff0c;逻辑是正确的&#xff0c;但是结果始终不对。 2、原因 最后定位是初始化语句使用错误导致的&#xff0c;我使用的是[[]] * (n)&#xff0c;应该使用[[] for _ in range(n)] 3、解…

Stable Diffusion 模型下载:ReV Animated

模型介绍 该模型能够创建 2.5D 类图像生成。此模型是检查点合并&#xff0c;这意味着它是其他模型的产物&#xff0c;以创建从原始模型派生的产品。 条目内容类型大模型基础模型SD 1.5来源CIVITAI作者s6yx文件名称revAnimated_v122EOL.safetensors文件大小5.13GB 生成案例 …

redis数据库设置对象的过期时间,到期后自动删除该条数据

redis数据库设置对象的过期时间,到期后自动删除该条数据&#xff01;过期时间的事情经常发生。比如大家领到了一些购物券。这张购物券有一个过期时间。必须在某节点之前&#xff08;某年某月末日&#xff09;之前&#xff0c;使用掉&#xff0c;否则该券就会过期&#xff0c;无…

Aigtek高压放大器用途是什么呢

高压放大器在电子领域中扮演着至关重要的角色&#xff0c;其主要作用是将低电压信号放大到更高的电压水平。这种类型的放大器广泛用于各种应用中&#xff0c;以下是高压放大器的用途以及其关键作用的详细介绍。 1、科学研究和实验室应用&#xff1a; 高压放大器在科学研究和实验…

【Linux】Linux权限

Hello everybody!在介绍完Linux操作系统常用的基本指令后&#xff0c;咱们就要开始权限的讲解了。如果没有看过我之前文章的宝子们可以去看看呦&#xff01;有比较系统的指令讲解&#xff01; 回到正题&#xff0c;关于权限&#xff0c;实际上没有大家想象中的那么神秘&#x…

解决问题(Tensorflow框架):ImportError: cannot import name ‘merge‘ from ‘keras.layers‘

看了一圈解决方案&#xff0c;没有找到跟我这个相关的 这就是版本兼容性问题 说句最简单的&#xff0c;针对我这个问题 直接把merge删除点就完事了&#xff0c;因为新版的tensorflow框架这个里面不包含merge&#xff0c;所以直接删掉问题就解决了

Linux进程信号处理:深入理解与应用(2​​)

&#x1f3ac;慕斯主页&#xff1a;修仙—别有洞天 ♈️今日夜电波&#xff1a;its 6pm but I miss u already.—bbbluelee 0:01━━━━━━️&#x1f49f;──────── 3:18 &#x1f504; ◀️…

ElementUI Form:Form表单

ElementUI安装与使用指南 Form表单 点击下载learnelementuispringboot项目源码 效果图 el-form.vue&#xff08;Form表单&#xff09;页面效果图 项目里 el-form.vue代码 <script> export default {name: el_form,data() {var checkAge (rule, value, callback…

计算机设计大赛 深度学习 opencv python 公式识别(图像识别 机器视觉)

文章目录 0 前言1 课题说明2 效果展示3 具体实现4 关键代码实现5 算法综合效果6 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 基于深度学习的数学公式识别算法实现 该项目较为新颖&#xff0c;适合作为竞赛课题方向&#xff0c;学…

中等题 ------ 链表

文章目录 1. 删除链表中的倒数第N个节点&#xff08;1&#xff09;栈&#xff08;2&#xff09;双指针&#xff08;快慢指针&#xff09; 2. 交换链表中的节点3. 两数相加4. 合并两个链表5. 旋转链表6. 奇偶链表7. 两两交换8. k 个一组翻转链表9. 分割链表10. 分隔链表11. 重排…

19.HarmonyOS App(JAVA)依赖布局DependentLayout使用方法

layout/ability_main.xml 显示位置不对&#xff1a;检查布局文件ohos:lef_of "id:tuzi",比如显示在兔子的左侧&#xff0c;这里就会显示不对。 需要id前没有$符号。改为&#xff1a; ohos:lef_of "$id:tuzi" <?xml version"1.0" encodi…

第六讲:文件操作

第六讲:文件操作 文件夹创建文件夹移动文件夹复制文件夹删除文件夹文件操作文件读取文件写入文件文件夹 创建文件夹 定义创建文件夹函数:chmk_path()定义一个函数 chmk_path(),这个函数的功能是创建文件夹。 首先需要导入操作系统接口模块——os 模块,这个模块中包含某些函…

前端小案例——滚动文本区域(HTML+CSS, 附源码)

一、前言 实现功能: 这个案例实现了一个具有滚动功能的文本区域&#xff0c;用于显示长文本内容&#xff0c;并且可以通过滚动条来查看完整的文本内容。 实现逻辑&#xff1a; 内容布局&#xff1a;在<body>中&#xff0c;使用<div>容器创建了一个类名为listen_t…

5.0 HDFS 集群服务建立教程

HDFS 集群是建立在 Hadoop 集群之上的&#xff0c;由于 HDFS 是 Hadoop 最主要的守护进程&#xff0c;所以 HDFS 集群的配置过程是 Hadoop 集群配置过程的代表。 使用 Docker 可以更加方便地、高效地构建出一个集群环境。 每台计算机中的配置 Hadoop 如何配置集群、不同的计…

【实战系列----消息队列 数据缓存】rabbitmq 消息队列 搭建和应用

线上运行图&#xff0c;更新不算最新版&#xff0c;但可以使用修改线程等补丁功能&#xff0c;建议使用新版本。 远程服务器配置图: 这个可以更具体情况&#xff0c;因为是缓存队列理所当然 内存越大越好&#xff0c;至于核心4核以上足够使用。4核心一样跑 这里主要是需要配置服…

2024美赛数学建模E题思路+代码

文章目录 1 赛题思路2 美赛比赛日期和时间3 赛题类型4 美赛常见数模问题5 建模资料 1 赛题思路 (赛题出来以后第一时间在CSDN分享) https://blog.csdn.net/dc_sinor?typeblog 2 美赛比赛日期和时间 比赛开始时间&#xff1a;北京时间2024年2月2日&#xff08;周五&#xff…