Intern Day78 - C#使用EF连接PostgreSQL数据库
同样问题
该问题等同于:
-
C#如何读取数据库中我们需要的一条数据
-
C#后端如何接收表单数据
-
C#后台如何查询数据库
-
C#如何读取数据库中的JSON配置信息/表单
-
C#如何获取后台数据库里的一条配置信息
-
C#连接数据库,并从数据库中取值并进行增删改查操作
前置知识
首先补充一些前置知识:
-
FirstOrDefaultAsync
:只取数据库中第一条数据;没有数据返回null- 如果是SingleOrDefaultAsync的话:只取第一条数据,并且大于1条数据报异常;没有数据返回null
-
await
:表示异步操作,基本都加 -
_unitofwork.DbContext.AxxBxx
:对AxxBxx
数据表/数据库进行操作(增删改查) -
有些会在
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反序列化 操作(一行代码)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」