当前位置: 首页 > wzjs >正文

二级建造师证件查询全国联网seo推广网址

二级建造师证件查询全国联网,seo推广网址,国外网站设计版式欣赏,香港做最好看的电影网站有哪些文章目录 项目地址一、给Habit添加Tags1.1 创建Tags1. 创建一个新的HabitTags实体2. 设置Habit和Tags的关系3. 设置HabitTag表4. 在HabitConfiguration里配置5. 将表添加到EFCore里6. 迁移数据 1.2 给Habit增加/修改标签1. 创建UpsertHabitTagsDto2. 创建查询HabitWithTagsDto3…

文章目录

  • 项目地址
  • 一、给Habit添加Tags
    • 1.1 创建Tags
      • 1. 创建一个新的HabitTags实体
      • 2. 设置Habit和Tags的关系
      • 3. 设置HabitTag表
      • 4. 在HabitConfiguration里配置
      • 5. 将表添加到EFCore里
      • 6. 迁移数据
    • 1.2 给Habit增加/修改标签
      • 1. 创建UpsertHabitTagsDto
      • 2. 创建查询HabitWithTagsDto
      • 3. 创建HabitTagsController
    • 1.3 使用Fluent API验证Create tag逻辑


项目地址

  • 教程作者:
  • 教程地址:
  • 代码仓库地址:
  • 所用到的框架和插件:
dbt 
airflow

一、给Habit添加Tags

1.1 创建Tags

1. 创建一个新的HabitTags实体

  • 该实体需要创建一个表,关联Habits和Tags
namespace DevHabit.Api.Entities;public sealed class HabitTag
{public string HabitId { get; set; }public string TagId { get; set; }public DateTime CreatedAtUtc { get; set; }
}

2. 设置Habit和Tags的关系

  • 在Habit 的是实体里创建关系

在这里插入图片描述

3. 设置HabitTag表

  • 添加HabitTagConfiguration.cs 配置文件

在这里插入图片描述
注意:这里Tag的WithMany()是空的原因是,暂时我们业务上不考虑通过Tag来找所有的Habits; 但是,Habit里面,我们建立了多对多关系,需要通过habit来找到所有的Tag

4. 在HabitConfiguration里配置

  • 修改了Habit的实体,我们需要在HabitConfiguration里配置关系

在这里插入图片描述

5. 将表添加到EFCore里

  • ApplicationDbContext.cs 里,添加新的表

public sealed class ApplicationDbContext(DbContextOptions<ApplicationDbContext> options) : DbContext(options)
{public DbSet<Habit> Habits { get; set; }public DbSet<Tag> Tags { get; set; }public DbSet<HabitTag> HabitTags { get; set; }protected override void OnModelCreating(ModelBuilder modelBuilder){modelBuilder.HasDefaultSchema(Schemas.Application);modelBuilder.ApplyConfigurationsFromAssembly(typeof(ApplicationDbContext).Assembly);}
}

6. 迁移数据

  1. 在Api的Console里先输入add-migration add HabitTag
  2. 换到docker环境,运行程序,自动执行

1.2 给Habit增加/修改标签

1. 创建UpsertHabitTagsDto

  • 创建UpsertHabitTagsDto,用于处理前端传来的api数据
namespace DevHabit.Api.DTOs.HabitTags;public sealed record UpsertHabitTagsDto
{public required List<string> TagIds { get; init; }
}

2. 创建查询HabitWithTagsDto

  • 用于查询单个habit后,显示该habit里的Tags

public sealed record HabitWithTagsDto
{public required string Id { get; init; }public required string Name { get; init; }public string? Description { get; init; }public required HabitType Type { get; init; }public required FrequencyDto Frequency { get; init; }public required TargetDto Target { get; init; }public required HabitStatus Status { get; init; }public required bool IsArchived { get; init; }public DateOnly? EndDate { get; init; }public MilestoneDto? Milestone { get; init; }public required DateTime CreatedAtUtc { get; init; }public DateTime? UpdatedAtUtc { get; init; }public DateTime? LastCompletedAtUtc { get; init; }public required string[] Tags { get; init; }
}

3. 创建HabitTagsController

  • 该Controller用于给Habit 处理标签
    [HttpPut]public async Task<ActionResult> UpsertHabitTags(string habitId, UpsertHabitTagsDto upsertHabitTagsDto){Habit? habit = await dbContext.Habits.Include(h => h.HabitTags).FirstOrDefaultAsync(h => h.Id == habitId);if (habit is null){return NotFound();}var currentTagIds = habit.HabitTags.Select(ht => ht.TagId).ToHashSet();if (currentTagIds.SetEquals(upsertHabitTagsDto.TagIds)){return NoContent();}List<string> existingTagIds = await dbContext.Tags.Where(t => upsertHabitTagsDto.TagIds.Contains(t.Id)).Select(t => t.Id).ToListAsync();if (existingTagIds.Count != upsertHabitTagsDto.TagIds.Count){return BadRequest("One or more tag IDs is invalid");}habit.HabitTags.RemoveAll(ht => !upsertHabitTagsDto.TagIds.Contains(ht.TagId));string[] tagIdsToAdd = upsertHabitTagsDto.TagIds.Except(currentTagIds).ToArray();habit.HabitTags.AddRange(tagIdsToAdd.Select(tagId => new HabitTag{HabitId = habitId,TagId = tagId,CreatedAtUtc = DateTime.UtcNow}));await dbContext.SaveChangesAsync();return NoContent();}

代码解释:

  1. 发起http://localhost:5000/habits/h_0195e900-3c05-7ee6-8b26-7ec6b367d66a/tags请求
  2. 接收一个habitId以及 UpsertHabitTagsDto
    在这里插入图片描述
  3. 根据Id从数据库查询该habit的数据
    在这里插入图片描述
  4. 查看是否有新增或者取消:通过数据库tags所有Id的hashSet和前端传来的进行对比,如果没有变化,则返回204

在这里插入图片描述
5. 排除非法habitId:查询Tags表的tagId和前端传来的Id进行对比,如果有不一样的,则报错

在这里插入图片描述
6. 删除Dto里取出的Tag,保存新增的Tags 完成upsert

在这里插入图片描述
7. 发送请求更改Tag
在这里插入图片描述

1.3 使用Fluent API验证Create tag逻辑

http://www.dtcms.com/wzjs/41771.html

相关文章:

  • 寻找在山西运城专业做网站推广的搜狗推广效果好吗
  • 怎样制作一个app软件seo搜索优化技术
  • 视频上传网站如何做优化seo网站
  • 龙港哪里有做阿里巴巴网站磁力猫最佳搜索引擎入口
  • 临桂城乡建设局网站凡科建站
  • 房地产公司网站建设与推广方案最新的全国疫情
  • 毕业设计做网站哪种好seo网站的优化流程
  • 河南省住建委官方网站长春网站建设
  • seo对于电子商务网站推广的作用公司软文代写
  • 找效果图去哪个网站凡科建站下载
  • 简述网站制作的一般流程优化关键词是什么意思
  • 街道口做网站软文写作什么意思
  • 在线支付的网站怎么做互联网营销模式有哪些
  • 云南疫情风险地区最新名单seo关键词优化外包
  • .net网站开发源码注释手机怎么创建自己的网站平台
  • 重庆提供行业网站建站报价关键词优化排名用什么软件比较好
  • 网站策划与建设实训心得企业管理培训课程网课
  • 国外有没有做问卷调查的网站网站优化方案案例
  • 珠海市横琴新区建设环保局网站手机百度网盘网页版登录入口
  • 怎样创建基本的网站最近一周新闻大事件
  • 固镇建设局网站seo查询网站
  • 江宁区住房和城乡建设局网站谷歌网页
  • 浙江可以做会计题目的网站网址链接
  • 网站建设方案选公司关键词在线挖掘网站
  • ps怎么做网站首页和超链接宁波网站推广找哪家
  • 包头网站建设设计网络优化大师下载
  • wordpress新版编辑seo优化的主要任务包括
  • 建设委员会网站沈阳百度seo排名优化软件
  • flask做的网站项目苏州seo建站
  • 安徽网站建设哪家好网站推广模式