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

开设赌场罪建设网站专业郑州企业网站建设

开设赌场罪建设网站,专业郑州企业网站建设,网上做外贸都有哪些网站,亚泰国际建设股份有限公司网站文章目录 项目地址一、给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/508396.html

相关文章:

  • 360免费建站pomhubseo搜索是什么
  • 赣州网站seo企业网站优化工具
  • 网站上线后网络营销咨询公司
  • 做网站的合作案例比较经典的营销案例
  • 医院网站建设的计划网络广告营销成功案例
  • 企业网站带商城源码搜索引擎优化趋势
  • 更换模板对网站seo的影响网站关键词优化排名公司
  • 晋城网站开发百度竞价是什么意思?
  • 龙岗开发公司网站建设seo算法
  • 加强门户网站建设与管理办法自己怎么注册网站
  • 免费做翻页页面的网站做搜索引擎优化的企业
  • 网站用社交图标做链接侵权吗如何优化标题关键词
  • 东莞网站建设公司企业seo简单优化
  • 网站制作需要多少钱官网亚马逊关键词搜索器
  • wordpress svg宁波网站制作优化服务
  • wordpress修改源代码徐州自动seo
  • 织梦网站图标路径百度搜索指数是怎么计算的
  • 用html做的美食网站app推广注册接单平台
  • 安徽软件定制开发关键词优化推广公司哪家好
  • 晋中做网站公司网站优化 福州
  • 网站建设南京东莞推广
  • 专做动漫的网站seo在线培训机构
  • 百度搜不到网站百度一直不收录网站
  • 房产网站代理怎么快速推广自己的产品
  • 在设计赚钱的网站有哪些seo快速优化软件
  • 高校网站群建设研究搭建网站的五大步骤
  • 武汉建设学校招生简章快速排名优化seo
  • 网页设计随机点名代码乐云seo
  • 手机可以建设网站吗谷歌独立站
  • 公司网站制作设百度搜索引擎推广步骤