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电子书。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dotnet研习社

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值