C#开发基础之使用四种流行的数据库访问技术ADO.NET、Dapper、EF Core 和 SqlSugar 连接 SQL Server

前言

在这篇文章中,我们将介绍四种流行的数据库访问技术:ADO.NET、Dapper、Entity Framework Core (EF Core) 和 SqlSugar。每种技术都提供了与 SQL Server 进行交互的不同方法,我们将以 TestDB 数据库中的 User 表为例,展示如何使用这些技术进行基本的数据库操作。连接方式将使用 Windows 安全身份验证。

ADO.NET

在这里插入图片描述

简介:ADO.NET 是 .NET 框架的一部分,用于直接与数据库进行交互。它提供了一个数据访问层,可以执行 SQL 命令、处理结果集,并管理数据库连接。

优点:性能高、控制力强、灵活性高。
缺点:代码较繁琐、需要手动管理数据操作和 SQL 语句。
引用项目

  <ItemGroup><PackageReference Include="Microsoft.Data.SqlClient" Version="5.2.2" /></ItemGroup>

示例代码

using Microsoft.Data.SqlClient;namespace ConsoleApp8
{public class AdoNetExample{private const string ConnectionString = "Server=localhost;Database=TestDB;Trusted_Connection=True;TrustServerCertificate=True;";public void ExecuteQuery(){using (var connection = new SqlConnection(ConnectionString)){connection.Open();var command = new SqlCommand("SELECT * FROM [User]", connection);using (var reader = command.ExecuteReader()){while (reader.Read()){Console.WriteLine($"{reader["Id"]}: {reader["Name"]}");}}}}}
}

Dapper

在这里插入图片描述

简介:Dapper 是一个轻量级的 ORM(对象关系映射)库,用于简化数据库操作。它通过映射 SQL 查询结果到 C# 对象来减少样板代码。Dapper 适合需要高性能但又希望减少样板代码的场景。

优点:性能接近 ADO.NET、易于使用、简洁。
缺点:不支持复杂的对象关系映射和数据追踪。
引用项目

  <ItemGroup><PackageReference Include="Dapper" Version="2.1.35" /><PackageReference Include="Microsoft.Data.SqlClient" Version="5.2.2" /></ItemGroup>

示例代码

using Microsoft.Data.SqlClient;
using Dapper;namespace ConsoleApp8
{public class DapperExample{private const string ConnectionString = "Server=localhost;Database=TestDB;Trusted_Connection=True;TrustServerCertificate=True;";public void ExecuteQuery(){using (var connection = new SqlConnection(ConnectionString)){var users = connection.Query<User>("SELECT * FROM [User]");foreach (var user in users){Console.WriteLine($"{user.Id}: {user.Name}");}}}}
}public class User
{public int Id { get; set; }public string Name { get; set; }
}

Entity Framework Core (EF Core)

在这里插入图片描述

简介:EF Core是微软提供的 ORM 框架,支持数据库与 .NET 对象之间的映射。EF Core 支持 LINQ 查询、变更跟踪和数据库迁移等丰富的功能来处理数据关系和变更跟踪高级功能。

优点:支持 LINQ 查询、自动生成数据库架构、功能强大。
缺点:性能相对较低、学习曲线陡峭。
引用项目

  <ItemGroup><PackageReference Include="Microsoft.EntityFrameworkCore" Version="8.0.8" /><PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="8.0.8" /></ItemGroup>

示例代码

using Microsoft.EntityFrameworkCore;
using System;
using System.Linq;public class AppDbContext : DbContext
{public DbSet<User> Users { get; set; }protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder){optionsBuilder.UseSqlServer("Server=localhost;Database=TestDB;Trusted_Connection=True;");}
}[Table("User")]
public class User
{public int Id { get; set; }public string Name { get; set; }
}public class EfCoreExample
{public void ExecuteQuery(){using (var context = new AppDbContext()){var users = context.Users.ToList();foreach (var user in users){Console.WriteLine($"{user.Id}: {user.Name}");}}}
}

SqlSugar在这里插入图片描述

简介:SqlSugar 是一个轻量级的 ORM 框架,提供了简单易用的 API 来进行数据访问。它适合需要快速开发和简化数据操作的场景。
优点:简单易用、功能全面、适配多种数据库。
缺点:在某些高级场景下可能不如 EF Core 强大。
引用项目

  <ItemGroup><PackageReference Include="SqlSugarCore" Version="5.1.4.168-preview20" /></ItemGroup>

示例代码

using SqlSugar;namespace ConsoleApp8
{public class SqlSugarExample{private static readonly SqlSugarClient Db = new SqlSugarClient(new ConnectionConfig{ConnectionString = "Server=localhost;Database=TestDB;Trusted_Connection=True;TrustServerCertificate=True;",DbType = DbType.SqlServer,IsAutoCloseConnection = true});public void ExecuteQuery(){var users = Db.Queryable<User>().ToList();foreach (var user in users){Console.WriteLine($"{user.Id}: {user.Name}");}}}
}public class User
{public int Id { get; set; }public string Name { get; set; }
}

总结

通过以上示例,可以看到不同的技术在访问数据库时的表现。ADO.NET 提供了最直接的方式,Dapper 结合了性能与易用性,EF Core 提供了强大的功能,SqlSugar 则简化了数据操作。根据的项目需求选择合适的技术,可以帮助更高效地进行数据库操作。

1. 如果本文对你有帮助,我将非常荣幸。
2. 如果你对本文有其他的看法,欢迎留言交流。
3. 如果你喜欢我的文章,谢谢三连,点赞,关注,转发吧!!!
4.关注公众号dotnet研习社,回复dotnet获取更多PDF电子书。

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

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

相关文章

关于malloc/free的一些知识点

序 关于malloc/free&#xff0c;我们都不陌生&#xff0c;在最开始学习c语言时就相当了解&#xff0c;包括c中的new也是封装的malloc。下边我以glibc实现的malloc来讲述一些关于malloc/free的知识点。 malloc/free malloc和free并不是系统调用&#xff0c;而是运行时库&…

C语言的结构体类型

在我们使用C语言进行编写代码时&#xff0c;常常会使用已经给定的类型来创建变量&#xff0c;比如int型&#xff0c;char型&#xff0c;double型等&#xff0c;而当我们想创建一些较为复杂的东西时&#xff0c;单单用一个类型变量是没办法做到的&#xff0c;比如我们想创建一个…

shader 案例学习笔记之fract函数

fract函数 可以理解为模1取余&#xff0c;获取一个数的小数部分&#xff0c;如果参数是向量&#xff0c;那就是获取每个向量分量上的小数 案例一 #ifdef GL_ES precision mediump float; #endif// 渲染分辨率 uniform vec2 u_resolution; // 程序运行时间 uniform float u_ti…

如何利用 Smarter Balanced 塑造教育领域的 AI 治理

目录 定义挑战 以人为本的设计引领 融入多样性 探索以学生为中心的价值观 探索效果的层次和不同的影响 部位于加利福尼亚州的Smarter Balanced Assessment Consortium 是一个由会员主导的公共组织&#xff0c;为 K-12 和高等教育领域的教育工作者提供评估系统。该组织成立…

初学者指南:MyBatis 入门教程

主要介绍了Mybatis的基本使用、JDBC、数据库连接池、lombok注解&#xff01; 文章目录 前言 什么是Mybatis? 快速入门 使用Mybatis查询所有的用户信息 配置SQL提示 JDBC介绍 Mybatis 数据库连接池 lombok 总结 前言 主要介绍了Mybatis的基本使用、JDBC、数据库连接…

基于stm32单片机使用 RT-Thread 系统的 ADC 外设

一、ADC 介绍 来源&#xff1a;RT-Thread 文档中心   ADC(Analog-to-Digital Converter) 指模数转换器。是指将连续变化的模拟信号转换为离散的数字信号的器件。真实世界的模拟信号&#xff0c;例如温度、压力、声音或者图像等&#xff0c;需要转换成更容易储存、处理和发射…

【Linux】:信号与信号产生

朋友们、伙计们&#xff0c;我们又见面了&#xff0c;本期来给大家带来信号和信号的产生相关代码和知识点&#xff0c;如果看完之后对你有一定的启发&#xff0c;那么请留下你的三连&#xff0c;祝大家心想事成&#xff01; C 语 言 专 栏&#xff1a;C语言&#xff1a;从入门到…

YOLOv10优改系列一:YOLOv10融合C2f_Ghost网络,让YoloV10实现性能的均衡

&#x1f4a5; &#x1f4a5;&#x1f4a5; &#x1f4a5;&#x1f4a5; &#x1f4a5;&#x1f4a5; &#x1f4a5;&#x1f4a5;神经网络专栏改进完整目录&#xff1a;点击 &#x1f497; 只需订阅一个专栏即可享用所有网络改进内容&#xff0c;每周定时更新 文章内容&#x…

微信自动通过好友和自动拉人进群,微加机器人这个功能太好用了

又发现一个好用的功能&#xff0c;之前就想找一个这种工具&#xff0c;现在发现可以利用微加机器人的两个功能来实现&#xff0c;分别是加好友和关键词拉群 首先 微加机器人的专业版 > 功能 > 加好友设置 可以设置一个关键词通过,这样别人加好友的时候只需要输入制定内…

实战案例(5)防火墙通过跨三层MAC识别功能控制三层核心下面的终端

如果网关是在核心设备上面&#xff0c;还能用MAC地址进行控制吗&#xff1f; 办公区域的网段都在三层上面&#xff0c;防火墙还能基于MAC来控制吗&#xff1f; 采用正常配置模式的步骤与思路 &#xff08;1&#xff09;配置思路与上面一样 &#xff08;2&#xff09;与上面区…

通信工程学习:什么是PDF策略决策功能

PDF策略决策功能 PDF策略决策功能&#xff08;Policy Decision Function, PDF&#xff09;在通信网络中&#xff0c;特别是在IP多媒体子系统&#xff08;IMS&#xff09;中&#xff0c;扮演着至关重要的角色。以下是对PDF策略决策功能的详细解释&#xff1a; 一、定义与功能概…

CentOS Stream 8中安装和使用 Docker

docker安装包-CSDN博客 〇、常用的docker命令 docker的作用&#xff1a; 快速进行软件的安装&#xff0c;便于软件环境的维护 docker的镜像: 压缩了指定软件的安装包的文件。使用镜像文件创建容器 docker的容器: 容器可以理解为就是一台小电脑。安装的linux系统&am…

【F的领地】项目拆解:小学教辅资料

项目介绍 虚拟资料项目的赛道其实一直可以做&#xff0c;实际上就是一个信息差项目。 知识付费是常青树&#xff0c;人天生有为知识付费的倾向。 而且虚拟资料通常一份 19~99 的资料有这方面需求很容易就能付款。 主要是产附属的流量再提问题。 我有个同乡&#xff0c;18年…

CircleProgressView 鸿蒙ArkTS自定义View实现圆形进度条

上篇的截图中除了一个上下的箭头&#xff0c;还有一个圆形进度条&#xff0c;今天我们来讲讲这个如何进行实现 我们看这个图形的构造&#xff0c;其实很简单&#xff1a;一个圆形图形&#xff0c;以及一个文本来显示进度 所以我们用一个层叠布局 绘制一个带颜色的圆形&#xff…

Java设计模式—面向对象设计原则(一) ----->开闭原则OCP(完整详解,附有代码+案例)

3.1开闭原则 对扩展开放&#xff0c;对修改关闭。在程序需要进行拓展的时候&#xff0c;不能去修改原有的代码&#xff0c;实现一个热插拔的效果。简言之&#xff0c;是为了使程序的扩展性好&#xff0c;易于维护和升级。想要达到这样的效果&#xff0c;我们需要使用接口和抽象…

怎么选择靠谱AI论文生成工具?看完我的试用都会明白!

2024年上半年开始AI论文写作工具开始火了&#xff0c;层出不穷&#xff01;作为一个经常需要写论文的懒人&#xff0c;我非常好奇这些AI工具的实际效果到底怎么样&#xff1f;为了测试不同工具的实力&#xff0c;我对他们都进行了试用&#xff0c;发现了一些意想不到的结果....…

路由器的固定ip地址是啥意思?固定ip地址有什么好处

‌在当今数字化时代&#xff0c;‌路由器作为连接互联网的重要设备&#xff0c;‌扮演着举足轻重的角色。‌其中&#xff0c;‌路由器的固定IP地址是一个常被提及但可能让人困惑的概念。‌下面跟着虎观代理小二一起将深入探讨路由器的固定IP地址的含义&#xff0c;‌揭示其背后…

QML入门之创建可重用的组件(一)

我们在日常开发中都会封装一些组件以便于项目内重复利用。QML创建可重用组件一般有两种方法。 自定义Item使用Component创建自定义组件 自定义Item 以一个自定义按钮举例&#xff1a; import QtQuick 2.12Rectangle {id: root// 自定义属性property string btnDis: qsTr(&qu…

51单片机+proteus仿真+基本实验学习1(跑马灯、独立按键和数码管)

目录 1.实验一跑马灯 1.1代码的生成 1.1.151单片机的延时函数的生成 1.1.251单片机的流水灯代码编写 1.2仿真框图 2.实验二I/O独立按键 2.1基本概念 2.1.1按键所需的基本知识 2.2代码的生成 2.2.1头文件定义的代码 2.2.2 执行代码 2.3仿真图 ​3实验三数码管 3.1基…

基于Verilog HDL的FPGA设计基础

第一章 Verilog数字集成电路设计方法概述 HDL(Hardware Description Language)----硬件描述语言 EDA(Electronic Design Automation)----电子设计自动化 VLSI(Very Large Scale Integrated)----超大规模集成电路 ASIC(Application Specific Integrated Circuit)----专用集成电路…