首页 程序笔记 国产轻量级ORMSqlSugar实践

国产轻量级ORMSqlSugar实践

国产轻量级ORMSqlSugar实践。拥有高性能,高扩展性,稳定性和国内开发团队的技术支持。功能全面,性能与同样是轻量级ORM的Dapper相比更加出色。

可以从github下载SqlSugar

https://github.com/sunkaixuan/SqlSugar

SqlSugar是.NET版本,SqlSugarCore是.NET CORE版本,根据你的项目选择你的引用dll

Install-Package sqlSugar 

Install-Package sqlSugarCore

下载打开Demo项目后,将SqlServerTest设为启动项,将项目里的config.cs文件里的数据库连接修改成自己的数据库地址,然后按F5就可以开始了。

Demo会自动帮你创建数据库和表。

使用ORM最多的功能就是增删改查了,那么我就自己写以下使用sqlSugar实现增删改查吧。

sqlSugar插入操作示例

在测试库SQLSUGAR4XTEST中有一张Order表,尝试为Order表新增一条数据

Order item1 = new Order()
{
 Name = "orderName",
 Price = 12
};
var result1 = db.Insertable(item1).ExecuteCommand();

运行后成功插入一条记录。

插入的时候有这么几个方法,返回不同的结果:

ExecuteCommand 返回影响行数

ExecuteReutrnIdentity/ExecuteReturnBigIdentity 返回自增列int或long

ExecuteCommandIdentityIntoEntity 回bool, 并将identity赋值到实体

ExecuteReturnEntity 返回实体 ,  只是自identity 添加到 参数的实体里面并返回,没有查2次库,所以有些默认值什么的变动是取不到的你们需要手动进行2次查询获取

sqlSugar删除操作示例

var db = GetInstance();
//根据实体删除(实体内主键一定要有值)
var dr1 = db.Deleteable<Order>(new Order() { Id = 0 }).ExecuteCommand();
//根据实体集删除
var dr2 = db.Deleteable<Order>(new List<Order>() { 
  new Order(){ Id=0 },
  new Order(){ Id=1 }
}).ExecuteCommand();
//使用锁
var dr3 = db.Deleteable<Order>(new Order() { Id = 0 }).With(SqlWith.RowLock).ExecuteCommand();
//根据主键删除
var dr4 = db.Deleteable<Order>(1).ExecuteCommand();
//根据主键批量删除
var dr5 = db.Deleteable<Order>(new int[] { 0, 1 }).ExecuteCommand();
//根据表达式删除
var dr6 = db.Deleteable<Order>(x => x.Id == 1).ExecuteCommand();
var dr7 = db.Deleteable<Order>(x => new int[] { 0, 1 }.Contains(x.CustomId)).ExecuteCommand();

以上示例写法是4.1.0.6 版本之后的优化写法,以根据实体删除为例,4.1.0.6版本以前的写法是

var dr1 = db.Deleteable<Order>().(new Order() { Id = 0 }).ExecuteCommand();

sqlSugar更新操作示例

SqlSugar更新分为2大类写法,1种是传实体对象的方式 这种是以实体对象为核心进行更新,不传实体对象这种是以表达式为核心进行更新。

Order updateObj = new Order()
{
    Id = 15,
    Name = "newName"
};
List<Order> updateObjs = new List<Order>() {
    updateObj
};
//根据实体更新(主键要有值,主键是更新条件)
var ur1 = db.Updateable(updateObj).ExecuteCommand();
//4.2.3添加了WhereColumns,根据条件列更新对象
var ur2 = db.Updateable(updateObj).WhereColumns(x => new { x.Name }).ExecuteCommand();//单列可以用x=>x.Name
//当WhereColumns和UpdateColumns一起用时,需要把wherecolumns中的列加到UpdateColumns中,否则会报错
var ur3 = db.Updateable(updateObj).UpdateColumns(y=>new { y.Name,y.Price }).WhereColumns(x => new { x.Name }).ExecuteCommand();
//只更新实体的Name列,主键要有值
var ur4 = db.Updateable(updateObj).UpdateColumns(y => new { y.Name }).ExecuteCommand();
//使用锁
var ur5 = db.Updateable(updateObj).With(SqlWith.UpdLock).ExecuteCommand();
//批量实体更新
var ur6 = db.Updateable(updateObjs).ExecuteCommand();
//不传对象的用法
var ur7 = db.Updateable<Order>(x => new Order() { Name = "newName", CreateTime = DateTime.Now }).Where(y => y.Id == 1).ExecuteCommand();
//只更新Name
var ur8 = db.Updateable<Order>(x => x.Name == "newName").Where(y => y.Id == 15).ExecuteCommand();

sqlSugar更新或插入操作示例

//主键存在库的情况
db.Saveable(updateObj).ExecuteReturnEntity();
//主键不存在库的情况
db.Saveable(new Order() { Name = "" }).ExecuteReturnEntity();
//可以设置插入过滤和指定列
db.Saveable(new Order() { Name = "" }).InsertColumns(it => it.Name).ExecuteReturnEntity();
db.Saveable(new Order() { Name = "" }).InsertIgnoreColumns(it => it.Name).ExecuteReturnEntity();
//也可以设置更新过滤和指定列
db.Saveable(updateObj).UpdateIgnoreColumns(it => it.Name).ExecuteReturnEntity();
db.Saveable(updateObj).UpdateColumns(it => new { it.Name, it.CreateTime }).ExecuteReturnEntity();

sqlSugar查询操作示例

//表达式查询
var lr1 = db.Queryable<Order>().Where(x => x.Id == 1).ToList();
//无锁查询
var lr2 = db.Queryable<Order>().With(SqlWith.NoLock).ToList();

以上就是增删改查的一些基本使用方法,还有很多复杂技巧可以到作者官方文档查看。

1

站心网

国产轻量级ORMSqlSugar实践。拥有高性能,高扩展性,稳定性和国内开发团队的技术支持。功能全面,性能与同..

为您推荐

在Docker、Kubernetes环境下部署.NET应用的最佳实践

在 Docker 和 Kubernetes 环境中部署 .NET 应用是现代云原生开发的重要实践之一。以下是一些经过验证的最佳实践,涵盖 Docker 镜像优化、Kubernetes 部署配置和整体架构建议。1. Docker 镜像构建的最佳实践1.1 使用..

PluginCore 基于 ASP.NET Core 的轻量级插件框架

项目概述PluginCore 是一个基于 ASP.NET Core 的轻量级插件框架,旨在简化插件的集成与管理。通过最少的配置,开发者可以快速集成并专注于业务逻辑的开发。它支持动态 WebAPI、插件隔离与共享、前后端分离、热插拔等..

HTQL 提取和查询HTML和XML数据的轻量级查询语言

HTQL(Hyper-Text Query Language)是一种用于提取和查询HTML和XML数据的轻量级查询语言。HTQL提供类似SQL的语法,可以方便地从网页或其他基于标签的文档中提取结构化数据,而无需解析整个文档。这使得它在爬虫、数..

轻量级 JavaScript 动画库 mo.js使用教程

mo.js 是一个强大的 JavaScript 动画库,专为在网页项目中创建复杂动画和运动图形而设计。它注重提供平滑、动态的动画效果,并通过简单、模块化和灵活的组件让开发更加便捷。mo.js官网地址:https://mojs.github.io/..

Docsify | 轻量级无静态构建文档站点生成器

什么是 Docsify?Docsify 可以即时生成你的文档网站。与 GitBook 不同,它不会生成静态 html 文件。相反,它会智能地加载和解析你的 Markdown 文件并将其显示为网站。要开始使用它,你需要做的就是创建一个 index.ht..

Dapper使用教程

假如你喜欢原生的Sql语句,又喜欢ORM的简单,那你一定会喜欢上Dapper这款ROM。Dapper的优势: 1、Dapper是一个轻型的ORM类。代码就一个SqlMapper.cs文件,编译后就40K的一个很小的Dll. 2、Dapper很快。Dapper的速度..

.Net各版本多线程使用原理和实践

多线程基本概念进程:程序在服务器上运行时,占据的计算资源合集,称之为进程。进程之间不会互相干扰,进程间的通信比较困难(分布式)。线程:程序执行的最小单位。线程也包含自己的计算资源,线程是属于进程的,一..

轻量级ORM框架Dapper用法

Dapper 是一个轻量级的 ORM 框架,它可以简化与数据库的交互。Dapper 使用 SQL 查询来访问数据库,并将查询结果映射到对象。Dapper 的优点轻量级:Dapper 的代码量非常小,非常适合小型项目。灵活:Dapper 提供了各..

.NET async await最佳实践

.NET 中的 async/await 是用于简化异步编程的关键工具。它允许你以一种类似于同步代码的方式编写异步代码,使得异步操作更加易于理解和维护。在使用 async 和 await 进行异步编程时,以下是一些 .NET 中的最佳实践:..

一款轻量级前端框架Avalon.Js

avalon2是一款基于虚拟DOM与属性劫持的 迷你、 易用、 高性能 的 前端MVVM框架, 拥有超优秀的兼容性, 支持移动开发, 后端渲染, WEB Component式组件开发, 无需编译, 开箱即用。上一个简单的入门例子:<!DOCTYPE htm..

你如何设计一个可扩展的.NET应用程序架构?请描述你在这方面的思考过程和实践经验。

设计可扩展的.NET应用程序架构是为了满足应用程序在需求增长和负载增加时的可扩展性和性能要求。下面是我在这方面的思考过程和实践经验:需求分析:首先,我会进行需求分析,了解应用程序的功能需求和预期的负载。这..

Windows 11自带轻量级虚拟机Windows Sandbox(沙盒)

Windows Sandbox 是 Windows 11 自带的轻量级虚拟机,可用于安全地运行未知或可疑的应用程序。沙盒环境与主机系统隔离,因此即使应用程序发生故障或恶意软件感染,也不会影响主机系统。要启用 Windows Sandbox,请按..

C# async/await最佳实践

在C#中,async/await 是处理异步操作的重要工具,它可以改善代码的可读性和性能。以下是一些async/await的最佳实践:1. 始终遵循命名规范对于异步方法,请使用以 "Async" 结尾的命名约定。这有助于识别异步方法并遵..

C# LINQ常见用法和最佳实践

Language-Integrated Query (LINQ) 是 C# 中强大的功能之一,它提供了一种方便而一致的方式来查询各种数据源,包括集合、数据库、XML 等。以下是一些 C# LINQ 的常见用法和最佳实践:基本查询语法:使用 LINQ 的基础..

C# ThreadPool实现原理和最佳实践

C#中的ThreadPool提供了一种管理线程池的机制,可以减少创建和销毁线程的开销,并提高多线程应用程序的性能。ThreadPool实现原理:线程池管理: ThreadPool维护一个线程池,其中包含一组预先创建的线程。这些线程在..

typescript react最佳实践

当在 React 项目中使用 TypeScript 时,以下是一些最佳实践:使用函数式组件和 Hooks函数式组件和 Hooks 是现代 React 开发的推荐方式,也是与 TypeScript 结合使用的最佳实践。import React, { useState } from 're..

WinBox.js 轻量级开源可拖动窗口库

WinBox.js 是一个用于创建可拖动、可调整大小的窗口的 JavaScript 库。它可以帮助开发者轻松地在网页中实现类似于桌面应用程序的界面,例如窗口化的用户界面。WinBox.js 官网地址:https://nextapps-de.github.io/wi..

使用Ollama在本地安装Google轻量级开源大模型Gemma

Google轻量级开源大模型Gemma在个人电脑上也可以部署体验了!以下是详细部署步骤:一、安装 Ollama1.访问 Ollama 官方网站(https://ollama.com/)。2.下载适合操作系统的 Ollama 版本。3.在 Windows 上,下载后直接..

Arc 创新的轻量级在线浏览器

Arc浏览器是一款新兴的网络浏览器,它被设计为一种轻量级的在线操作系统,旨在为用户提供一个更加现代化和高效的互联网使用体验。Arc浏览器官网地址:https://arc.net/目前Arc浏览器 Windows版本已经可以申请加入Wai..

CountUp.js 轻量级的数值动画JavaScript插件库

CountUp.js 是一款无依赖、轻量级的JavaScript库,专门用于创建数值动画效果,用于创建更具吸引力的数字数据显示动画。它使数字变化更加生动,并支持多种自定义设置,适用于各种场景。CountUp.js GitHub地址:https:..

发表回复

返回顶部