EF8 学习过程中的问题和解决方案

一、varchar类型字段如果为null 无法使用contains来判断是否包含字符串

      1.   有问题的代码:

contractList = _dbcontext.contractHeads.Where(u => u.code.Contains(queryStr) || u.name.Contains(queryStr) || u.companyName.Contains(queryStr) || u.customerName.Contains(queryStr) ||u.note.Contains(queryStr)).ToList();

        2. 问题点:

        当note字段中存在null的情况下会报错,想想也正常,如果null是无法调用contains方法的。

        3. 解决方案:

        通过三目运算来判断:       

u.note ==null?false:u.note.contains(queryStr)

        到这里原本以为问题解决了,但是发现还是不行

contractList = _dbcontext.contractHeads.Where(u => u.code.Contains(queryStr) || u.name.Contains(queryStr) || u.companyName.Contains(queryStr) || u.customerName.Contains(queryStr) ||u.note ==null?false:u.note.contains(queryStr)).ToList();

        4. 新的问题点

        这样写相当于  u.code.Contains(queryStr) || u.name.Contains(queryStr) || u.companyName.Contains(queryStr) || u.customerName.Contains(queryStr) ||u.note ==null 是在做三目运算的判断,这样是达不到我们的需求的。

        5. 正确的代码:

        将三目运算放到括号里面

contractList = _dbcontext.contractHeads.Where(u => u.code.Contains(queryStr) || u.name.Contains(queryStr) || u.companyName.Contains(queryStr) || u.customerName.Contains(queryStr) || (u.note ==null?false:u.note.contains(queryStr))).ToList();

二、Code First模式下,如果模型类引用了另外一个类,实际查询过程中会用到另外一个类的字段的。

        1. 具体场景:

[Table("BomBody")]public class BomBody{public Guid Id { get; set; }    public  BomHead bomHead { get; set; }    public   Production production { get; set; }[Column(TypeName = "decimal(18,4)")]public decimal num { get; set; }[Column(TypeName ="varchar(500)")]public string? note { get; set; }public bool ifDel { get; set; }}[Table("Production")]
public class Production
{[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]public Guid id { get; set; }  //IDpublic string name { get; set; }public string productionModel { get; set; }public bool isProduction { get; set; } public Units  unit { get; set; }    }

        2.  实际业务过程中如果   var bomBody =_dbcontext.Bombodies.toList();  然后访问bomBody.production.name  访问是会报错的。 bomBody.production 为null

        3.  解决办法:

var bomBody = _dbcontext.BomBodies.include(u=>u.production).toList();

        需要把production给include 进去。

三、表格手机端显示优化的方案

        1. 使用bootstrap表格的table-responsive-md/sm

        会自己根据你选择的表格宽度大小生成一个横向的滚动条。第一次用这个时候发现死活都不生效,那么就是你要手工去除掉 td tr 自动换行

        2. 很原始但很有效的一个方案:

        如果是pc端那么就显示表格,如果是手机端那么就显示为card。效果如下

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/396268.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

uniapp开启数据压缩的坑-SpringBoot-gzip

1、服务器配置 服务端开启的数据压缩配置 server:port: ${port:8881}servlet:# 应用上下文路径context-path: /orderserverundertow:threads:io: 4worker: 500buffer-size: 2048# 开启Gzip压缩,compression:# 开启压缩enabled: true# 对json格式内容进行压缩mime-…

KCTF 闯关游戏:1 ~ 7 关

前言 看雪CTF平台是一个专注于网络安全技术竞赛的在线平台,它提供了一个供网络安全爱好者和技术专家进行技术交流、学习和竞技的环境。CTF(Capture The Flag,夺旗赛)是网络安全领域内的一种流行竞赛形式,起源于1996年…

嵌入式全栈开发学习笔记---数据结构(排序算法)

目录 排序的分类 稳定排序与不稳定排序 内部排序和外部排序 算法的复杂性 常见的排序算法 直接插入排序 希尔排序 快速排序 简单选择排序 堆排序 归并排序 基数排序 常见的排序总结 到目前为止,数据结构的线性结构和树状结构就都讲完了,本节…

使用 MongoDB 构建 AI:Flagler Health 的 AI 旅程如何彻底改变患者护理

Flagler Health 致力于为慢性病患者提供支持,为其匹配合适的医生以提供合适的护理。 通常,身患严重病痛的患者面临的选择有限,他们往往需要长期服用阿片类药物,或寻求成本高昂的侵入性外科手术干预。遗憾的是,后一种方…

SQL语句创建数据库(增删查改)

SQL语句 一.数据库的基础1.1 什么是数据库1.2 基本使用1.2.1 连接服务器1.2.2 使用案例 1.2 SQL分类 二.库的操作2.1 创建数据库2.2 创建数据库示例2.3 字符集和校验规则2.3.1 查看系统默认字符集以及校验规则2.3.2查看数据库支持的字符集2.3.3查看数据库支持的字符集校验规则2…

Android系统Android.bp文件详解

文章目录 1. 基本语法结构2. 常见模块类型3. 模块属性常见属性包括: 4. 具体示例5. 高级功能5.1. 条件编译5.2. 变量定义与使用5.3. 模块继承 6. 总结 Android.bp 是 Android 构建系统(Android Build System)中的配置文件,用于描述…

go之命令行工具urfave-cli

一、urfave/cli urfave/cli 是一个声明性的、简单、快速且有趣的包,用于用 Go 构建命令行工具。 二、快速使用 2.1 引入依赖 go get github.com/urfave/cli/v2 2.2 demo package mainimport ("fmt""log""os""github.com/ur…

OpenCV图像滤波(9)getGaussianKernel()函数的使用

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 功能描述 cv::getGaussianKernel() 是 OpenCV 中的一个函数,用于生成一维高斯核。这种核通常用于实现高斯模糊滤波器,该滤波器可以…

备考CISSP,看这一篇就够了!(附备考资料下载)

作者在2023年发布过一篇博文《不报辅导班一次性通过CISSP经验分享》,后台收到很多备考小伙伴的私信咨询,我就基于大家经常问的问题整理了此文章为大家答疑解惑,同时附上备考过程中作者收集到的全部资源(见文末)&#x…

EasyCVR视频汇聚平台云计算技术核心优势:高效、灵活与可扩展性深度解读

随着科技的飞速发展和社会的不断进步,视频监控已经成为现代社会治安防控、企业管理等场景安全管理中不可或缺的一部分。在这一背景下,EasyCVR视频汇聚平台凭借其强大的云计算技术,展现出了卓越的性能和广泛的应用前景。本文将深入解析EasyCVR…

Rust学习----Rust安装

如何安装Rust? 1.官网:https://www.rust-lang.org/zh-CN/ 2.Linux or Max: curl https://sh.rustup.rs -sSf | sh 3.Windows按官网指导安装。 4.Windows Subsystem for Linux: curl --proto https --tlsv1.2 -sSf https://sh.rustup.rs…

JavaDS —— 位图(BitSet)与 布隆过滤器

位图 引入问题:给40亿个不重复的无符号整数,没排过序。给一个无符号整数,如何快速判断一个数是否在这40亿个数中。 首先要注意 40 亿个数据如果使用 整型(int) 来存放的话,就是要 40 亿个整型,一个整型有…

redis面试(十一)锁超时

boolean res lock.tryLock(100, 10, TimeUnit.SECONDS); RedissonLock里面有这样一个方法tryLock(),意思是尝试获取锁的结果。 最大等待时间100s,并且获取到锁之后,10s之内没有释放的话,锁会自动失效。 尝试获取锁超时 time …

【vue3|第20期】vue3中Vue Router路由器工作模式

日期:2024年8月6日 作者:Commas 签名:(ง •_•)ง 积跬步以致千里,积小流以成江海…… 注释:如果您觉得有所帮助,帮忙点个赞,也可以关注我,我们一起成长;如果有不对的地方&#xff…

LiveNVR监控流媒体Onvif/RTSP常见问题-页面上传SSL证书配置开启 HTTPS 服务?什么时候必须要开启HTTPS服务?

LiveNVR常见问题-页面上传SSL证书配置开启 HTTPS 服务?什么时候必须要开启HTTPS服务? 1、配置开启HTTPS1.1、准备https证书1.2、配置HTTPS端口1.3、配置证书路径1.3、 页面上传SSL证书 2、验证HTTPS服务3、为什么要开启HTTPS4、RTSP/HLS/FLV/RTMP拉流Onv…

IROS2024 | DarkGS:学习神经照明和3D高斯重新照明,用于黑暗中机器人探索

DarkGS:学习神经照明和3D高斯重新照明,用于黑暗中机器人探索 论文标题:DarkGS: Learning Neural Illumination and 3D Gaussians Relighting for Robotic Exploration in the Dark 论文地址:https://arxiv.org/abs/2403.10814 研…

PasteSpider快速上手开发者专用部署助手

【【【PasteSpider的安装--一键拉取镜像】】】 (首次使用,建议使用MemorySqlite的模式,只要2行代码即可启动一个PasteSpider,第一行拉取PasteSpider的镜像,第二行启动PasteSpider容器!) 安装PasteSpider之后&#xf…

文件上传绕过最新版安全狗

本文来源无问社区,更多实战内容,渗透思路可前往查看http://www.wwlib.cn/index.php/artread/artid/9960.html http分块传输绕过 http分块传输⼀直是⼀个很经典的绕过⽅式,只是在近⼏年分块传输⼀直被卡的很死,很多waf都开始加 …

8.9套题

A. 猴猴吃苹果 题意:给定根节点k,求访问点的顺序,使得每次从上一个点到当前点的权值最大。访问过的点权值为0。权值一样时,输出最小编号 思路:由于是双向边,先求根节点到每一个节点的距离值。在第一轮中&…

【算法题】整数反转,一文彻底搞清!

目录 一、题目描述 二、解题思路 1、整数转为字符串 2、数学运算 三、参考答案 一、题目描述 整数反转 给你一个32位的有符号整数x,返回将x中的数字部分反转后的结果。 如果反转后整数超过32位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。 …