Dapper 是一个轻量级的ORM(对象关系映射)框架,与Entity Framework不同,它更加轻量、快速且易于使用。Dapper 是一个微型ORM库,它直接通过扩展方法在IDbConnection接口上工作。Dapper没有Entity Framework那样丰富的功能,但在性能和易用性上有很大的优势,特别是在需要高效数据访问的场景下。
目录
主要功能
- 轻量级:相比其他ORM框架,Dapper更加轻量,不会产生额外的复杂性。
- 性能高效:因为Dapper不做复杂的对象跟踪等操作,所以性能非常高效。
- 简单易用:通过简单的扩展方法来执行SQL查询,插入、更新和删除操作。
使用步骤
安装Dapper:
使用NuGet包管理器安装Dapper:
Install-Package Dapper
建立数据库连接:
使用IDbConnection接口来建立数据库连接。
执行CRUD操作:
使用Dapper的扩展方法来执行SQL查询和命令。
示例项目
1. 安装Dapper
通过NuGet包管理器控制台安装Dapper:
Install-Package Dapper
2. 创建模型类
创建一个简单的模型类,比如Student
类:
public class Student
{
public int StudentId { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public DateTime EnrollmentDate { get; set; }
}
3. 配置数据库连接
在你的应用程序中配置数据库连接字符串,例如在App.config
或Web.config
文件中:
<configuration>
<connectionStrings>
<add name="DefaultConnection"
connectionString="Data Source=(localdb)\MSSQLLocalDB;Initial Catalog=SchoolDB;Integrated Security=True"
providerName="System.Data.SqlClient" />
</connectionStrings>
</configuration>
4. 执行数据库操作
在程序中使用Dapper来执行CRUD操作,例如添加、读取、更新和删除学生记录:
using System;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using Dapper;
class Program
{
static void Main(string[] args)
{
string connectionString = "Data Source=(localdb)\\MSSQLLocalDB;Initial Catalog=SchoolDB;Integrated Security=True";
using (IDbConnection db = new SqlConnection(connectionString))
{
// 插入新学生
var insertQuery = "INSERT INTO Students (FirstName, LastName, EnrollmentDate) VALUES (@FirstName, @LastName, @EnrollmentDate)";
var student = new Student
{
FirstName = "John",
LastName = "Doe",
EnrollmentDate = DateTime.Now
};
db.Execute(insertQuery, student);
// 读取学生数据
var selectQuery = "SELECT * FROM Students";
var students = db.Query<Student>(selectQuery).ToList();
foreach (var s in students)
{
Console.WriteLine($"{s.FirstName} {s.LastName}");
}
// 更新学生数据
var updateQuery = "UPDATE Students SET FirstName = @FirstName WHERE StudentId = @StudentId";
var studentToUpdate = students.FirstOrDefault();
if (studentToUpdate != null)
{
studentToUpdate.FirstName = "Jane";
db.Execute(updateQuery, studentToUpdate);
}
// 删除学生数据
var deleteQuery = "DELETE FROM Students WHERE StudentId = @StudentId";
var studentToDelete = students.FirstOrDefault();
if (studentToDelete != null)
{
db.Execute(deleteQuery, new { studentToDelete.StudentId });
}
}
}
}
高级特性
1. 参数化查询
Dapper使用参数化查询来防止SQL注入攻击。在SQL语句中使用参数占位符,然后将参数作为匿名对象传递给Execute或Query方法。
string query = "SELECT * FROM Students WHERE LastName = @LastName";
var students = db.Query<Student>(query, new { LastName = "Doe" }).ToList();
2. 多对多关系
虽然Dapper不提供复杂的关系映射功能,但你可以手动处理多对多关系。例如,假设你有一个Course
类和一个中间表StudentCourses
来表示学生和课程之间的多对多关系,你可以手动执行查询并进行数据处理。
3. 存储过程
Dapper可以轻松地调用存储过程,并将结果映射到对象。
var students = db.Query<Student>("GetStudents", commandType: CommandType.StoredProcedure).ToList();
4. 异步操作
Dapper也支持异步操作,可以使用ExecuteAsync
和QueryAsync
方法。
public async Task<IEnumerable<Student>> GetStudentsAsync()
{
using (IDbConnection db = new SqlConnection(connectionString))
{
string query = "SELECT * FROM Students";
return await db.QueryAsync<Student>(query);
}
}
总结
Dapper 是一个轻量级且高效的ORM框架,非常适合需要快速高效数据访问的场景。它提供了简单易用的API,支持参数化查询、存储过程和异步操作等功能。虽然它没有Entity Framework那样丰富的功能,但在性能和灵活性上有很大的优势。通过Dapper,开发者可以在保持高性能的同时简化数据访问层的代码。
本站资源均来自互联网,仅供研究学习,禁止违法使用和商用,产生法律纠纷本站概不负责!如果侵犯了您的权益请与我们联系!
转载请注明出处: 免费源码网-免费的源码资源网站 » 轻量级的ORM(对象关系映射)框架 之 Dapper
发表评论 取消回复