编辑
2025-09-22
C#
00

目录

环境准备
实体类定义
实现仓储
使用仓储
仓储方法
总结

在.NET开发中,SqlSugar是一个简单而强大的ORM框架,它提供了丰富的功能,帮助开发者轻松地处理数据库操作。实体仓储模式是一种常用的设计模式,它有助于将数据访问逻辑从业务逻辑中分离出来,使得代码更加清晰和易于管理。本文将通过一个简单的例子,展示如何在SqlSugar下应用实体仓储模式。

环境准备

首先,确保你的开发环境已经安装了SqlSugar。你可以通过NuGet包管理器来安装SqlSugar:

Bash
Install-Package SqlSugarCore

image.png

实体类定义

在开始之前,我们需要定义一个实体类。假设我们有一个Product产品实体:

C#
public class Product { [SugarColumn(IsPrimaryKey = true, IsIdentity = true)] public int Id { get; set; } public string Name { get; set; } public decimal Price { get; set; } }

在这个Product类中,我们定义了三个属性:IdNamePriceId属性被标记为主键和自增属性。

实现仓储

现在,我们来实现刚才定义的接口:

C#
// 定义一个泛型仓储类,继承自SimpleClient<T>,T是一个类的泛型参数 public class SqlSugarRepository<T> : SimpleClient<T> where T : class, new() { // 构造函数 public SqlSugarRepository() { // 创建SqlSugarClient实例,用于数据库操作 var db = new SqlSugarClient(new ConnectionConfig() { // 从应用程序配置文件中读取数据库连接字符串 ConnectionString = System.Configuration.ConfigurationManager.AppSettings["ConnectionString"].ToString(), // 设置数据库类型,这里以SqlServer为例,根据实际数据库类型进行选择 DbType = DbType.SqlServer, // 设置是否自动关闭数据库连接,true表示操作完成后自动关闭连接 IsAutoCloseConnection = true, // 设置主键的初始化方式,这里使用属性标注的方式 InitKeyType = InitKeyType.Attribute }); // 将创建的SqlSugarClient实例赋值给继承自SimpleClient<T>的Context属性 base.Context = db; // 配置AOP拦截器,在SQL语句执行前输出SQL语句到控制台 db.Aop.OnLogExecuting = (sql, pars) => { Console.WriteLine(sql); // 控制台输出执行的SQL语句 }; } }

定义了一个名为 SqlSugarRepository<T> 的泛型类,它继承自 SimpleClient<T>,这里的 T 是一个泛型参数,表示该仓储类可以用于任何类的实例。where T : class, new() 是一个约束,指明 T 必须是一个类,并且这个类必须有一个无参数的构造函数。

使用仓储

你可以创建Product实体的仓储实例,并使用它进行数据库操作:

C#
// 定义一个异步的主函数 static async Task Main() { // 创建Product类型的仓储类实例 var productRepository = new SqlSugarRepository<Product>(); // 异步获取所有产品列表 var lst = await productRepository.GetListAsync(); // 遍历产品列表 foreach (var item in lst) { // 在控制台输出每个产品的Id、名称和价格,使用制表符进行分隔 Console.WriteLine($"{item.Id}\t{item.Name}\t{item.Price}"); } }

这段代码演示了如何使用 SqlSugarRepository<T> 类(一个泛型仓储类)来异步获取所有的 Product 实例并将它们的 IdNamePrice 属性输出到控制台上。这里使用了 await 关键字来等待异步操作 GetListAsync 的完成,这个操作是从数据库异步获取所有的 Product 实例列表。输出时,每个属性之间使用了制表符 \t 来分隔,使得输出结果更加整齐。

仓储方法

  1. GetById - 根据主键值获取一条记录。
  2. GetList - 获取表中的所有记录或符合条件的记录列表。
  3. GetPageList - 分页获取记录列表。
  4. GetSingle - 获取满足条件的单条记录。
  5. Insert - 插入一条新记录。
  6. InsertRange - 插入多条记录。
  7. Delete - 删除一条或多条记录。
  8. DeleteById - 根据主键值删除一条记录。
  9. DeleteByIds - 根据一组主键值删除多条记录。
  10. Update - 更新一条或多条记录。
  11. UpdateRange - 更新多条记录。
  12. AsQueryable - 返回一个可以进行LINQ查询的对象。
  13. Count - 获取满足条件的记录数量。
  14. IsAny - 检查是否存在满足条件的记录。

总结

这个例子展示了如何在SqlSugar下使用实体仓储模式。通过这种方式,我们可以将数据访问逻辑封装在仓储中,使得代码更加模块化和易于维护。SqlSugar提供的丰富功能使得实现这种模式变得非常简单和直观。

本文作者:技术老小子

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!