Dapper 简介
Dapper 是一个轻量级的对象关系映射(Object - Relational Mapping,ORM)工具,它在.NET 应用程序中用于简化数据库访问操作。它提供了高性能、简单易用的方式来执行 SQL 查询和命令,并且与ADO.NET紧密集成。Dapper 的主要优势在于其简洁性和高性能,它能够快速地将数据库查询结果映射到 C# 对象,并且在执行 SQL 命令时具有较低的开销。
我们这里介绍一下如何在项目中使用Dapper,并进行归类。如果你只想简单实现,可以参考我上一篇文章。
使用 Dapper 的准备工作
安装 Dapper:
可以通过 NuGet 包管理器来安装 Dapper。在 Visual Studio 中,右键点击项目,选择 “管理 NuGet 程序包”,然后在 NuGet 包管理器中搜索 “Dapper” 并安装。
数据库准备
根据自己的需求进行下载数据库的资源包,我这边使用的数据库是sqlite,接下来的例子以它来写。
包管理
因为我的项目时mvvm的,大家可以根据自己的项目建其他的包,红框圈住的包分别是
- common 工具包
- interfaces 实现类接口包
- MOdels 实体类
- Services 实现类
在完整的项目中,这几个包都是必要的。
话不多说,直接上代码
工具包
SqliteConnectionFactory
public class SqliteConnectionFactory{private readonly string _connectionString;public SqliteConnectionFactory(string connectionString){_connectionString = connectionString;}public IDbConnection CreateConnection(string _connectionString){_connectionString = "Data Source=precess.db;Version=3;";return new SQLiteConnection(_connectionString);}
实现类接口
IUserServices
public interface IUserServices{User Login(string username, string password);User FindUserName(string userName);User FindId(int id);List<User> FindAll();}
实现类
UserServices
public class UserServices : IUserServices
{private static string connection1;private readonly SqliteConnectionFactory connectionFactory = new SqliteConnectionFactory(connection1);public List<User> FindAll(){using (var connection = connectionFactory.CreateConnection(connection1)){connection.Open();// 编写更新语句string Query = "SELECT * FROM User"; 执行更新操作List<User>_users = (List<User>)connection.Query<User>(Query);return _users;}}public User FindId(int id){using (var connection = connectionFactory.CreateConnection(connection1)){connection.Open();// 编写更新语句string Query = "SELECT * FROM User where Id = @id"; 执行更新操作User _users = connection.QueryFirst<User>(Query, new { id = id });return _users;}}public User FindUserName(string userName){using (var connection = connectionFactory.CreateConnection(connection1)){connection.Open();// 编写更新语句string Query = "SELECT * FROM User where UserName = @UserName"; 执行更新操作User _users = connection.QueryFirst<User>(Query, new { UserName = userName });return _users;}}public User Login(string username, string password){throw new NotImplementedException();}
}
实体类
User
public class User{public int Id { get; set; }// <summary>用户名</summary>private string _userName;public string UserName { get => _userName; set => SetProperty(ref _userName, value); }// <summary>密码</summary>private string _passWork;public string PassWork { get => _passWork; set => SetProperty(ref _passWork, value); }// <summary>级别</summary>private string _level;public string Level { get => _level; set => SetProperty(ref _level, value); }}
方法使用
我们在使用时,需要进行一下依赖注入
以我的项目为例,在vm中加上以下代码:
private readonly IUserServices _userServices;
如何在主方法上加上:
IUserServices userServices,
然后在方法中注入如图所示:
到这里就完成了,但是有一点需要注意,我们view层也要进行一下注入,可以跟上述方法一样进行,我下一篇文章会讲一下如何把这些依赖都封装起来,并完成mvvm绑定。
小白路漫漫,让我们一起加油!!!