• Intern Day78


    同样问题

    该问题等同于:

    • 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反序列化 操作(一行代码)
    
  • 相关阅读:
    PHP数组创建的的两种办法
    Apache配置文件(httpd.conf)的语法检查
    Apache的配置文件,使用了自己的目录,添加了别名的使用
    Apache2.4虚拟主机+别名配置
    margin外边距合并详解
    资源文件res中各种标签的使用
    http://119.145.255.64:10010/repositories/
    一个App的整个流程
    网页快捷键的使用
    oracle 日期字段的处理
  • 原文地址:https://www.cnblogs.com/OFSHK/p/14731863.html
Copyright © 2020-2023  润新知