CAD二次开发(11)-在用C#进行CAD开发SQLite和SqlSugar的使用

1. System.Data.SQLite的使用

1.1 包的引入

利用 Nuget引入其相关包
在这里插入图片描述

1.2 App.config配置引入到CAD

因为我们当前的项目是类库项目,需要依托于宿主程序才可以运行,所以我们就得需要将SQLite自动生成的App.config里面的部分配置移植到CAD的配置文件中。保证System.Data.SQLite依赖的正常运行。
在这里插入图片描述

1.3 CAD配置文件中引入配置信息

在这里插入图片描述
打开后将如下内容复制到CAD安装目录下的acad.exe.config文件中的configuration标签中:

	<system.data><DbProviderFactories><remove invariant="System.Data.SQLite.EF6" /><add name="SQLite Data Provider (Entity Framework 6)" invariant="System.Data.SQLite.EF6" description=".NET Framework Data Provider for SQLite (Entity Framework 6)" type="System.Data.SQLite.EF6.SQLiteProviderFactory, System.Data.SQLite.EF6" /><remove invariant="System.Data.SQLite" /><add name="SQLite Data Provider" invariant="System.Data.SQLite" description=".NET Framework Data Provider for SQLite" type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite" /></DbProviderFactories></system.data><runtime><assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"><dependentAssembly><assemblyIdentity name="System.Data.SQLite" publicKeyToken="db937bc2d44ff139" culture="neutral" /><bindingRedirect oldVersion="0.0.0.0-1.0.118.0" newVersion="1.0.118.0" /></dependentAssembly></assemblyBinding></runtime>

2. sqlSugar的使用

2.1 依赖引入

在这里插入图片描述

2.2 工具类

using gse.Constant;
using SqlSugar;
using System;namespace gse.Tools
{/// <summary>/// SqlSugar配置类/// </summary>public class SqlSugarBase{//创建数据库对象 (用法和EF Dappper一样通过new保证线程安全)public  SqlSugarClient Db = new SqlSugarClient(new ConnectionConfig(){ConnectionString = "datasource="+ CommonConstant.DB_DIRECTORY,DbType = DbType.Sqlite,IsAutoCloseConnection = true},db => {db.Aop.OnLogExecuting = (sql, pars) =>{//获取原生SQL推荐 5.1.4.63  性能OKConsole.WriteLine(UtilMethods.GetNativeSql(sql, pars));};});}
}

2.3 具体使用

实体类

using SqlSugar;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace gse.Entities
{/// <summary>/// 项目实体/// </summary>[SugarTable("tbl_project")]public class Project{/// <summary>/// 主键/// </summary>[SugarColumn(IsPrimaryKey = true, IsIdentity = true)]public int Id { get; set; }/// <summary>/// 项目ID/// </summary>public string ProjectId { get; set; }/// <summary>/// 项目名称/// </summary>public string ProjectName { get; set; }/// <summary>/// 项目详细参数/// </summary>[SugarColumn(IsNullable = true)]public string ProjectDesc { get; set; }/// <summary>/// 是否为当前项目 0否 1是/// </summary>public int CurrentFlag { get; set; }/// <summary>/// 项目创建时间/// </summary>public string CreateTime { get; set; }public Project(){}public Project(int id, string projectId, string projectName, string projectDesc, int currentFlag, string createTime){Id = id;ProjectId = projectId;ProjectName = projectName;ProjectDesc = projectDesc;CurrentFlag = currentFlag;CreateTime = createTime;}public override string ToString(){return "Project{" +"Id='" + Id + '\'' +", ProjectId='" + ProjectId + '\'' +", ProjectName='" + ProjectName + '\'' +", ProjectDesc='" + ProjectDesc + '\'' +", CurrentFlag=" + CurrentFlag +", CreateTime='" + CreateTime + '\'' +'}';}}
}

Service

using gse.Entities;
using gse.Tools;
using SqlSugar;
using System;
using System.Collections.Generic;namespace gse.Service
{public class TblProjectService{SqlSugarBase SqlSugarBase = new SqlSugarBase();/// <summary>/// 项目添加/// </summary>/// <param name="project"></param>public string AddProject(Project project){string msg = "";if (string.IsNullOrEmpty(project.ProjectId)){return msg = "项目编号不能为空";}if (string.IsNullOrEmpty(project.ProjectName)){return msg = "项目名称不能为空";}List<Project> pro1 = SqlSugarBase.Db.Queryable<Project>().Where(pro => pro.ProjectId == project.ProjectId).ToList();if (pro1.Count > 0){return msg = "项目编号重复";}List<Project> pro2 = SqlSugarBase.Db.Queryable<Project>().Where(pro => pro.ProjectName == project.ProjectName).ToList();if (pro2.Count > 0){return msg = "项目名称重复";}project.CreateTime = DateTimeUtils.DATE.Now();SqlSugarBase.Db.Insertable(project).ExecuteReturnIdentity();return msg;}/// <summary>/// 更新项目/// </summary>/// <param name="project">项目信息</param>public string UpdateProject(Project project){string msg = "";if (string.IsNullOrEmpty(project.ProjectId)){return msg = "项目编号不能为空";}if (string.IsNullOrEmpty(project.ProjectName)){return msg = "项目名称不能为空";}List<Project> pros = SqlSugarBase.Db.Queryable<Project>().Where(pro => pro.ProjectName == project.ProjectName && pro.ProjectId == project.ProjectId).ToList();if (pros.Count > 0){Project pro = pros[0];pro.ProjectId = project.ProjectId;pro.ProjectName = project.ProjectName;pro.ProjectDesc = project.ProjectDesc;pro.CurrentFlag = project.CurrentFlag;SqlSugarBase.Db.Updateable(pro).ExecuteCommand();}else{return msg = "项目不存在";}return msg;}/// <summary>/// 设置当前工程/// </summary>/// <param name="project"></param>/// <returns></returns>public void setCurrentProject(Project project){try{Project current = selectCurrentProject();if (current != null){//首先将原来的当前状态设置为非当前current.CurrentFlag = 0;SqlSugarBase.Db.Updateable(current).ExecuteCommand();}//设置选中工程为当前工程List<Project> pros = SqlSugarBase.Db.Queryable<Project>().Where(pro => pro.ProjectName == project.ProjectName && pro.ProjectId == project.ProjectId).ToList();if (pros.Count > 0){Project pro = pros[0];pro.CurrentFlag = 1;SqlSugarBase.Db.Updateable(pro).ExecuteCommand();}}catch (Exception ex){//事务回滚SqlSugarBase.Db.Ado.RollbackTran();return;}}/// <summary>/// 查看当前工程/// </summary>/// <param name="project"></param>public Project selectCurrentProject(){List<Project> projects = SqlSugarBase.Db.Queryable<Project>().Where(pro => pro.CurrentFlag == 1).ToList();if (projects.Count > 0){//首先将原来的当前状态设置为非当前return projects[0];}return null;}/// <summary>/// 删除项目/// </summary>/// <param name="projectId">项目ID</param>public void DeleteProject(string projectId){SqlSugarBase.Db.Deleteable<Project>().Where(it => it.ProjectId == projectId).ExecuteCommand();}/// <summary>/// 根据id查询项目/// </summary>/// <param name="projectId"> 项目ID</param>/// <returns></returns>public Project SelectProjectById(string projectId){List<Project> projects = SqlSugarBase.Db.Queryable<Project>().Where(pro => pro.ProjectId == projectId).ToList();if (projects.Count > 0){return projects[0];}return null;}/// <summary>/// 根据项目id或者项目名称查询列表/// </summary>/// <param name="projectId">项目ID</param>/// <param name="name">项目名称</param>/// <returns></returns>public List<Project> SelectProjectPage(string projectId, string name){if (string.IsNullOrEmpty(projectId) && string.IsNullOrEmpty(name)){List<Project> projects = SqlSugarBase.Db.Queryable<Project>().ToList();return projects;}else{var exp = Expressionable.Create<Project>();exp.OrIF(!string.IsNullOrEmpty(projectId), it => it.ProjectId.Equals(projectId));exp.OrIF(!string.IsNullOrEmpty(name), it => it.ProjectName.Contains(name));var projects = SqlSugarBase.Db.Queryable<Project>().Where(exp.ToExpression()).ToList();return projects;}}}
}

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

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

相关文章

DC/AC电源模块:为医疗设备提供安全可靠的电力转换

BOSHIDA DC/AC电源模块&#xff1a;为医疗设备提供安全可靠的电力转换 DC/AC电源模块是一种用于将直流电源转换为交流电源的设备&#xff0c;广泛应用于各种医疗设备中。它们的主要功能是为医疗设备提供安全可靠的电力转换&#xff0c;以确保这些设备在工作过程中提供稳定的电…

硬盘格式化NTFS好还是exFAT好 U盘存储文件用哪个格式好? 硬盘用exfat还是ntfs mac不能读取移动硬盘怎么解决

在计算机世界中&#xff0c;文件系统是数据管理的基石&#xff0c;而NTFS和exFAT无疑是这块基石上的两大巨头。它们各自拥有独特的特点和优势&#xff0c;并在不同的使用场景中发挥着重要作用。 什么是文件系统 文件系统提供了组织驱动器的方法。它规定了如何在驱动器上存储数…

android中的JNI的DEMO

一&#xff1a;源代码 native-lib.cpp #include "native-lib.h"JNIEXPORT jint JNICALL Java_com_example_jnidemo_MainActivity_add(JNIEnv* env, jobject, jint a, jint b) {return a b; }JNIEXPORT jint JNICALL Java_com_example_jnidemo_MainActivity_subtra…

当 DolphinDB 遇上方程式赛车:捕捉极速赛场上的时间印记

在风驰电掣的赛车场上&#xff0c;每一毫秒都蕴藏着无限的可能。在这里&#xff0c;数据不再是冰冷的数字序列&#xff0c;而是跳动的脉搏&#xff0c;每一次跃动都精准地回应着赛车的每一次呼吸&#xff0c;敏锐感知着赛车的动态。随着物联网和遥测技术的发展&#xff0c;实时…

六西格玛培训新选择,老字号品质有保障!

在追求企业卓越与完美的道路上&#xff0c;六西格玛管理无疑是一个被广泛认可与采纳的方法论。六西格玛不仅仅是一种管理策略&#xff0c;更是一种文化和哲学&#xff0c;它强调通过数据驱动和持续改进来减少流程中的缺陷&#xff0c;提升客户满意度&#xff0c;并最终实现企业…

【ARM Coresight Debug 系列 -- ARMv8/v9 软件实现断点地址设置】

请阅读【嵌入式开发学习必备专栏 】 文章目录 ARMv8/v9 软件设置断点地址断点地址软件配置流程代码实现 ARMv8/v9 软件设置断点地址 在ARMv8/9架构中&#xff0c;可以通过寄存器 DBGBVR0_EL1 设置断点。这个寄存器是一系列调试断点值寄存器中的第一个DBGBVRn_EL1&#xff0c;其…

jpg图片怎么压缩大小?图片压缩,3个方法

在日常生活中&#xff0c;我们经常会面临着需要在网络上传送、分享或存储的图片文件过大的问题&#xff0c;而JPG格式的图片由于其普遍性&#xff0c;也常常成为我们处理的对象。为了解决这一常见的挑战&#xff0c;学会如何压缩JPG图片的大小是非常实用的技能。 在这篇文章中…

「51媒体」电视台媒体邀约采访报道怎么做?

传媒如春雨&#xff0c;润物细无声&#xff0c;大家好&#xff0c;我是51媒体网胡老师。 电视台作为地方主流媒体&#xff0c;对于新闻报道有着严格的选题标准和报道流程。如果您希望电视台对某个会议或活动进行报道&#xff0c;可以按这样的方法来做&#xff1a; 1.明确活动信…

鼠情自动监测系统

TH-SH1在农业生产中&#xff0c;鼠害问题一直是困扰农民的一大难题。传统的鼠害防治方法往往依赖于大规模施药或布置捕鼠器等方式&#xff0c;这些方法不仅效率低下&#xff0c;而且容易对环境造成污染。随着科技的不断发展&#xff0c;鼠情自动监测系统应运而生&#xff0c;为…

LabVIEW Windows与RT系统的比较与选择

LabVIEW是一种系统设计和开发环境&#xff0c;广泛应用于各类工程和科学应用中。LabVIEW Windows和LabVIEW RT&#xff08;Real-Time&#xff09;是LabVIEW的两个主要版本&#xff0c;分别适用于不同的应用场景。以下从多个角度详细分析两者的区别&#xff0c;并提供选择建议。…

云计算 | (七)特殊云机制

文章目录 📚自动伸缩监听器📚负载均衡器📚SLA监控器📚按使用付费监控器📚审计监控器📚故障转移系统📚虚拟机监控器📚资源集群📚多设备代理📚状态管理数据库📚自动伸缩监听器 自动伸缩监听器 (Automated scaling listener)是一个服务代理,它监控和追踪…

JavaFX 下拉框

组合框允许用户选择几个选项之一。用户可以滚动到下拉列表。组合框可以是可编辑和不可编辑的。 创建组合框 以下代码将选项列表包装到ObservableList中&#xff0c;然后使用observable列表实例化ComboBox类。 ObservableList<String> options FXCollections.observab…

机器学习课程复习——朴素贝叶斯

1. 定义 是一种基于贝叶斯定理与特征条件独立假设的生成式分类方法。 2. 公式 原版公式 简化版公式 由于上述公式无法计算&#xff0c;引入条件独立假设 条件独立版公式 3. 贝叶斯分类器 由上述公式可得贝叶斯分类器 化简为 4. 参数估计 4.1. 极大似然估计 4.2. 学习与分…

【规格说明】软件需求规格说明书实际项目案例模板(doc原件套用)

1 范围 1.1 系统概述 1.2 文档概述 1.3 术语及缩略语 2 引用文档 3 需求 3.1 要求的状态和方式 3.2 系统能力需求 3.3 系统外部接口需求 3.3.1 管理接口 3.3.2 业务接口 3.4 系统内部接口需求 3.5 系统内部数据需求 3.6 适应性需求 3.7 安全性需求 3.8 保密性需求 3.9 环境需求…

【Nginx系列】反向代理在现代网络架构中的重要性

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

C# 利用XejeN框架源码,编写一个在 Winform 界面上的语法高亮的编辑器,使用 Monaco 编辑器

析锦基于Monaco技术实现的Winform语法高亮编辑器 winform中&#xff0c;我们有时需要高亮显示基于某种语言的语法编辑器。 目前比较强大且UI现代化的&#xff0c;无疑是宇宙最强IDE的兄弟&#xff1a;VS Code。 类似 VS Code 的体验&#xff0c;可以考虑使用 Monaco Editor&a…

vue3-父子通信

一个简单的vue3子组件调用父组件方法的demo <template> <div> <h2>Parent Component父组件</h2> <ChildComponent notify-parent"handleParentMethod" /> </div> </template> <script> import { ref } fr…

LVGL开发教程-objects对象

知不足而奋进 望远山而前行 目录 知不足而奋进 望远山而前行​ 文章目录 前言 1.图层 2.objects 2.1 位置 2.2 尺寸 2.3 align 2.4 样式 总结 前言 在嵌入式 GUI 开发中&#xff0c;LVGL&#xff08;Light and Versatile Graphics Library&#xff09;是一个强大的工…

电脑丢失dll文件一键修复的方法有哪些?分析dll文件修复的多种策略

我们经常会遇到各种各样的问题&#xff0c;其中之一就是DLL文件的丢失。DLL文件&#xff08;动态链接库&#xff09;是操作系统和应用程序正常运行所必需的文件&#xff0c;当这些文件丢失或损坏时&#xff0c;可能会导致软件无法正常启动&#xff0c;甚至影响系统的稳定性。对…

SpringMVC系列二: 请求方式介绍

RequestMapping &#x1f49e;基本使用&#x1f49e;RequestMapping注解其它使用方式可以修饰类和方法可以指定请求方式可以指定params和headers支持简单表达式支持Ant 风格资源地址配合PathVariable 映射 URL 绑定的占位符注意事项和使用细节课后作业 上一讲, 我们学习的是Spr…