浏览器标题切换
浏览器标题切换end

Intern Day78 - C#使用EF连接PostgreSQL数据库

同样问题

该问题等同于:

  • C#如何读取数据库中我们需要的一条数据

  • C#后端如何接收表单数据

  • C#后台如何查询数据库

  • C#如何读取数据库中的JSON配置信息/表单

  • C#如何获取后台数据库里的一条配置信息

  • C#连接数据库,并从数据库中取值并进行增删改查操作

前置知识

首先补充一些前置知识:

  1. FirstOrDefaultAsync:只取数据库中第一条数据;没有数据返回null

    • 如果是SingleOrDefaultAsync的话:只取第一条数据,并且大于1条数据报异常;没有数据返回null
  2. await:表示异步操作,基本都加

  3. _unitofwork.DbContext.AxxBxx:对 AxxBxx 数据表/数据库进行操作(增删改查)

  4. 有些会在 AxxBxx 后加上 .AsNoTracking().Join(……).where(c=>c.xxx==input.xxx&&!xxx).selecct(x=>new{Id=x.Id,Name=x.Name}).ToListAsync();

    • .AsNoTracking():就是说是否需要跟踪数据库。如果我们只是需要查询,后续没有其他操作,那就不需要跟踪,这句话可以不用写;如果是其他操作,比如增删改,那么就需要跟踪。

具体代码

var config = await _unitofwork.DbContext.AxxBxx(DbSet中配置文件数据表对应的名称 需要操作的数据表名)
    .FirstOrDefaultAsync(x=>x.Key=="xxx.xxx_xxx"&&x.IsDeleted == false);
// Key的位置写什么,取决于需要取的数据 除了主键(一般是id 但是不同数据在不同表中id又不一定相同)外,
// 能区分其他行的唯一字段性质
// xxx.xxx_xxx部分写:数据库中对应的该条信息的 Key
// x=>x.Key=="xxx.xxx_xxx":表示判断集合中是否存在 x.Key=="xxx.xxx_xxx" 的元素

if (config == null) // 判断配置文件是否为空
{
    // _logger.LogDebug($"后台xx数据为空");
    throw new xxxxException($"项目xx配置为空"); // 这个抛异常的同时也打了log出来,所以上面那个语句不用写
}

// 注意:如果得到的数据后续使用的话,需要 JSON反序列化 操作(一行代码)
posted @   抓水母的派大星  阅读(148)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」
点击右上角即可分享
微信分享提示