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反序列化 操作(一行代码)