前言
在这篇文章中,我们将介绍四种流行的数据库访问技术: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电子书。