Dapper「不如sqlsugar」

dapper

  • 官网地址:https://github.com/DapperLib/Dapper

  • 使用文档:https://www.learndapper.com

  • 动态更新字段

    • 使用字符串拼接动态构建 SQL

    • 使用匿名对象

  • 查询返回的 List 类型

    • 直接返回匿名类型的 List

    • 将匿名类型结果映射到指定类型

    • 使用匿名类型作为参数并返回强类型

    • 多映射到匿名类型

    • 动态返回匿名类型并转换为字典

  • 对查询结果进行linq操作

// 正确用法示例
var users = connection.Query<User>("SELECT * FROM Users WHERE Age >= @MinAge", 
                 new { MinAge = minAge }).ToList();
        
return users
    .Where(u => u.IsActive)
    .Select(u => new UserSummary {
        Id = u.Id,
        DisplayName = $"{u.FirstName} {u.LastName}",
        AccountAge = DateTime.Now.Year - u.JoinDate.Year
    })
    .ToList();
//⚠️:注意事项
//立即执行查询:当需要确保数据已完全加载时使用
//延迟执行:直接返回 IEnumerable 让调用方决定是否物化
// 避免不必要的内存化(ToList)
return connection.Query<User>(/*...*/)
       .AsEnumerable()  // 保持延迟执行
       .Select(u => new UserSummary { /*...*/ });

# dapper

- 官网地址:[https://github.com/DapperLib/Dapper](https://github.com/DapperLib/Dapper)
- 使用文档:[https://www.learndapper.com](https://www.learndapper.com)
- 动态更新字段
  - 使用字符串拼接动态构建 SQL
  - 使用匿名对象
- 查询返回的 List 类型
  - 直接返回匿名类型的 List
  - 将匿名类型结果映射到指定类型
  - 使用匿名类型作为参数并返回强类型
  - 多映射到匿名类型
  - 动态返回匿名类型并转换为字典
- 对查询结果进行linq操作

```csharp
// 正确用法示例
var users = connection.Query<User>("SELECT * FROM Users WHERE Age >= @MinAge", 
                 new { MinAge = minAge }).ToList();
        
return users
    .Where(u => u.IsActive)
    .Select(u => new UserSummary {
        Id = u.Id,
        DisplayName = $"{u.FirstName} {u.LastName}",
        AccountAge = DateTime.Now.Year - u.JoinDate.Year
    })
    .ToList();
//⚠️:注意事项
//立即执行查询:当需要确保数据已完全加载时使用
//延迟执行:直接返回 IEnumerable 让调用方决定是否物化
// 避免不必要的内存化(ToList)
return connection.Query<User>(/*...*/)
       .AsEnumerable()  // 保持延迟执行
       .Select(u => new UserSummary { /*...*/ });
```