RuoVea.ExSugar 8.0.0.17

There is a newer version of this package available.
See the version list below for details.
dotnet add package RuoVea.ExSugar --version 8.0.0.17
                    
NuGet\Install-Package RuoVea.ExSugar -Version 8.0.0.17
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="RuoVea.ExSugar" Version="8.0.0.17" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="RuoVea.ExSugar" Version="8.0.0.17" />
                    
Directory.Packages.props
<PackageReference Include="RuoVea.ExSugar" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add RuoVea.ExSugar --version 8.0.0.17
                    
#r "nuget: RuoVea.ExSugar, 8.0.0.17"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#addin nuget:?package=RuoVea.ExSugar&version=8.0.0.17
                    
Install RuoVea.ExSugar as a Cake Addin
#tool nuget:?package=RuoVea.ExSugar&version=8.0.0.17
                    
Install RuoVea.ExSugar as a Cake Tool

RuoVea.ExSqlSugar

介绍

ExSqlSugar SqlSugar扩展类库,支持简体中文、繁体中文、粤语、日语、法语、英语.

1.快速入门

通过Nuget安装组件

Install-Package RuoVea.ExSqlSugar

2、使用方式

方式一、

1.定义类 DefultDbContext继承 DbContext
/// <summary>
/// DefultDbContext
/// </summary>
public class DefultDbContext : DbContext
{
    /// <summary>
    /// DefultDbContext
    /// </summary>
    /// <param name="config"></param>
    public DefultDbContext(ConnectionConfig config) : base(config)
    {
    }
}

2.注入使用DbContext:builder.Services.AddDbContextSetup(x=>{});
builder.Services
    .AddDbContextSetup(provide=>new DefultDbContext(AppSettings.GetSection("DefultDbConnString").Get<ConnectionConfig>()))
3.使用的地方注入这个DefultDbContext
public class DemoService : IDemoService
{
    private readonly DefultDbContext _defultDbContext;
    /// <summary>
    /// 
    /// </summary>
    /// <param name="defultDbContext"></param>
    public DemoService(DefultDbContext defultDbContext)
    {
        _defultDbContext = defultDbContext;
    }
}

方式二、

注册服务

builder.Services.AddSqlSugarSetup(...);// 注册服务

builder.Services.AddSqlSugarSetup();// 注册服务

使用的地方使用

public class DemoService: IDemoService
{
    SugarRepository<SysUser>  _sysUserRepository;

    public DemoService(SugarRepository<SysUser> sysUserRepository) {
        _sysUserRepository = sysUserRepository;
    }
}

两种方式默认开启了标记删除过滤

按照程序集方式注入应用服务 builder.Services.AddInjectServiceSetup(assembly,)

添加sql执行相关日志

builder.Services.AddRestFulLogSetup<TFilterType>();

创建时

字段属性包涵

CreateTime||create_time 默认赋值系统当前时间
Creator 赋值当前登录用户(若有)
IsDelete||is_delete 赋值默认值0

修改时

字段属性包涵

ModifyTime||modify_time 默认赋值系统当前时间
Modifier 赋值当前登录用户(若有)

查询时

字段模型继承了

1、IDeletedEntity 将自动过滤 IsDeleted数据

2、EntityBase、ICreatorFilter 将自动过滤 UserId数据

3、内置过滤器

3.1、配置实体假删除过滤器
IDeletedEntity
3.2、创建用户赋值
EntityBase、ICreatorFilter
3.3、租户数据过滤
ITenantIdFilter
3.4、机构Id接口过滤器
ICreatorFilter
3.5、自定义实体过滤器接口
ICustormerEntityFilter

直接在数据模型中继承上述接口

4、内置事务单元

使用方式、

1、开启事务单元 services.AddSqlSugarSetup(IsAllUnitOfWork:true);// 注册服务 开启全局事务单元

2、在需要开启的控制器方法增加事务单元特性 [UnitOfWork]

5、配置文件

{
  /* 数据库链接 具体配置见SqlSugar官网(第一个为默认库不需要设置ConfigId)*/
  "ConnectionConfigs": [
    {
      "DbType": "Sqlite", /*MySql、SqlServer、Sqlite、Oracle、PostgreSQL、Dm、Kdbndp、Oscar、MySqlConnector、Access、OpenGauss、QuestDB、HG、ClickHouse、GBase、Odbc、Custom */
      "ConnectionString": "DataSource=./ruovea.dll", /*库连接字符串*/
      "EnableUnderLine": false, /*启用驼峰转下划线*/
      "EnableDiffLog": false, /*启用库表差异日志*/

      "IsEncrypt": false, /*是否加密*/
      "DbSecurity": "", /*链接字符串解密密钥*/

      "IsDeleteFilter": true, /*查询删除过滤 实体需继承 IDeletedEntity*/
      "IsUserIdFilter": false, /*查询过滤器默认为false,true的时候;当有用户cretor的时候将及时过滤 实体需继承ICreatorFilter或EntityBase*/
      "IsTenantIdFilter": false, /*查询过滤器 默认为false,true的时候;当有用户cretor的时候将及时过滤 实体需继承 ITenantIdFilter*/
      "CommandTimeOut": 30 /*设置 SQL 执行的超时时间(默认30)分钟 */
    }
    //  /*其他数据库配置(可以配置多个)*/
    //,{
    //  "ConfigId": "test",
    //  "DbType": "Sqlite",
    //  "ConnectionString": "DataSource=./test.db", // 库连接字符串

    //  "EnableUnderLine": false, /*启用驼峰转下划线*/
    //  "EnableDiffLog": false, /*启用库表差异日志*/

    //  "IsEncrypt": false, /*是否加密*/
    //  "DbSecurity": "", /*链接字符串解密密钥*/

    //  "IsDeleteFilter": true, /*查询删除过滤 实体需继承 IDeletedEntity*/
    //  "IsUserIdFilter": false, /*查询过滤器默认为false,true的时候;当有用户cretor的时候将及时过滤 实体需继承ICreatorFilter或EntityBase*/
    //  "IsTenantIdFilter": false, /*查询过滤器 默认为false,true的时候;当有用户cretor的时候将及时过滤 实体需继承 ITenantIdFilter*/
    //  "CommandTimeOut": 30 /*设置 SQL 执行的超时时间(默认30)分钟 */
    //}
  ],
  //审计字段,驼峰命名即可:(示例:CreateTime)
  "DataAuditing":{
      "CreateTime":"CreateTime",//创建时间
      "ModifyTime":"ModifyTime",//修改时间
      "Creator":"Creator",//创建人
      "Modifier":"Modifier",//修改人
      "TenantId":"TenantId",//租户Id
      "IsDelete":"IsDelete"//删除标记
  }
}

6、已实现RestFulLog类

重写此类处理:异常日志,操作日志,差异日志

7、Dto

7.1、框架实体基类Id(EntityBaseIdDto)
/// <summary>
/// 框架实体基类Id
/// </summary>
public class EntityBaseIdDto
{
    /// <summary>
    /// 主键Id
    /// </summary>
    public long Id { get; set; }

    /// <summary>
    /// 检查验证Id
    /// </summary>
    public void Check()
}
7.2、实体种子数据接口(SeedDataEntity)
SeedDataEntity<TEntity> where TEntity : class, new()
{
    /// <summary>
    /// 种子数据
    /// </summary>
    /// <returns></returns>
    IList<TEntity> HasData();
}
7.3、框架实体基类(EntityBaseDto)
/// <summary>
/// 框架实体基类
/// </summary>
public class EntityBaseDto: EntityBaseIdDto
{ 
    /// <summary>
    /// 创建时间
    /// </summary>
    public DateTime? CreateTime { get; set; }

    /// <summary>
    /// 修改时间
    /// </summary>
    public DateTime? ModifyTime { get; set; }

    /// <summary>
    /// 创建者Id
    /// </summary>
    public long? Creator { get; set; }

    /// <summary>
    /// 修改人
    /// </summary>
    public long? Modifier { get; set; }

    /// <summary>
    /// 逻辑删除:0=未删除,1=已删除 Default:0
    /// </summary>
    public IsDelete? IsDelete { get; set; }
}

8、Entity

8.1、递增主键实体基类 (AutoKeyBase)
/// <summary>
/// 递增主键实体基类
/// </summary>
public class AutoKeyBase
{
    /// <summary>
    /// 主键Id
    /// </summary>
    public int Id { get; set; }
}
8.2、AutoKeyEntityBase
/// <summary>
/// 
/// </summary>
public partial class AutoKeyEntityBase : AutoKeyBase, IDeletedEntity, IAuditableEntity
{
    /// <summary>
    /// 创建时间
    /// </summary>
    [SugarColumn(ColumnDescription = "创建时间", IsOnlyIgnoreUpdate = true)]
    public virtual DateTime? CreateTime { get; set; }

    /// <summary>
    /// 修改时间
    /// </summary>
    [SugarColumn(ColumnDescription = "修改时间", IsOnlyIgnoreInsert = true)]
    public virtual DateTime? ModifyTime { get; set; }

    /// <summary>
    /// 创建者Id
    /// </summary>
    [SugarColumn(ColumnDescription = "创建者Id", IsOnlyIgnoreUpdate = true)]
    public virtual long? Creator { get; set; }

    /// <summary>
    /// 修改人
    /// </summary>
    [SugarColumn(ColumnDescription = "修改者Id")]
    public virtual long? Modifier { get; set; }

    /// <summary>
    /// 逻辑删除:0=未删除,1=已删除 Default:0
    /// </summary>
    [SugarColumn(ColumnDescription = "软删除标记", IsNullable = true)]
    public virtual IsDelete? IsDelete { get; set; }
}
8.3、框架实体基类 (EntityBase)
/// <summary>
/// 框架实体基类
/// </summary>
public partial class EntityBase : EntityBaseId, IDeletedEntity,IAuditableEntity
{
    /// <summary>
    /// 创建时间
    /// </summary>
    [SugarColumn(ColumnDescription = "创建时间", IsOnlyIgnoreUpdate = true)]
    public virtual DateTime? CreateTime { get; set; }

    /// <summary>
    /// 修改时间
    /// </summary>
    [SugarColumn(ColumnDescription = "修改时间", IsOnlyIgnoreInsert = true)]
    public virtual DateTime? ModifyTime { get; set; }

    /// <summary>
    /// 创建者Id
    /// </summary>
    [SugarColumn(ColumnDescription = "创建者Id", IsOnlyIgnoreUpdate = true)]
    public virtual long? Creator { get; set; }

    /// <summary>
    /// 修改人
    /// </summary>
    [SugarColumn(ColumnDescription = "修改者Id")]
    public virtual long? Modifier { get; set; }

    /// <summary>
    /// 逻辑删除:0=未删除,1=已删除 Default:0
    /// </summary>
    [SugarColumn(ColumnDescription = "软删除标记")]
    public virtual IsDelete? IsDelete { get; set; }  
}

8.4、框架实体基类Id (EntityBaseId)
/// <summary>
/// 框架实体基类Id
/// </summary>
public partial class EntityBaseId
{
    /// <summary>
    /// 主键Id
    /// </summary>
    [Display(Name = "主键Id")]
    [Required(ErrorMessage = "Id不能为空")]
    [DataValidation(ValidationTypes.Numeric)]
    [SugarColumn(IsPrimaryKey = true, IsIdentity = false)]
    public virtual long Id { get; set; }
}
8.5、租户基类实体 (EntityTenant)
/// <summary>
/// 租户基类实体
/// </summary>
public partial class EntityTenant : EntityBase, ITenantEntity
{
    /// <summary>
    /// 租户Id
    /// </summary>
    [SugarColumn(ColumnDescription = "租户Id", IsOnlyIgnoreUpdate = true)]
    public virtual long? TenantId { get; set; }
}
8.6、租户基类实体Id (EntityTenantId)
/// <summary>
/// 租户基类实体Id
/// </summary>
public partial class EntityTenantId : EntityBaseId,ITenantEntity
{
    /// <summary>
    /// 租户Id
    /// </summary>
    [SugarColumn(ColumnDescription = "租户Id", IsOnlyIgnoreUpdate = true)]
    public virtual long? TenantId { get; set; }
}

9、SqlSugar 打印SQL语句参数格式化帮助类

/// <summary>
/// 格式化参数拼接成完整的SQL语句
/// </summary>
/// <param name="sql"></param>
/// <param name="pars"></param>
/// <returns></returns>
public static string ParameterFormat(string sql, SugarParameter[] pars)

10、sqlsugar 配置扩展方法

/// <summary>
/// 配置 SqlSugar 客户端
/// </summary>
/// <param name="db">SqlSugar 客户端实例</param>
/// <param name="config">数据库连接配置</param>
/// <param name="commandTimeOut">命令超时时间(秒)</param>
/// <param name="currentUser"></param>
/// <param name="restFulLog">RESTful 日志接口实现</param>
/// <param name="userIdFilter">是否启用用户过滤器</param>
/// <param name="tenantIdFilter">是否启用租户过滤器</param>
/// <param name="deleteFilter">是否启用逻辑删除过滤器</param>
/// <param name="moreFilter">额外的过滤器操作委托</param>
public static void SqlSugarClientUtil(SqlSugarClient db, DbConnectionConfig config, int commandTimeOut, ICurrentUser currentUser, IRestFulLog restFulLog = null, bool userIdFilter = false, bool tenantIdFilter = false, bool deleteFilter = true, Action<SqlSugarScopeProvider> moreFilter = null)

/// <summary>
/// 
/// </summary>
/// <param name="dbConnection"></param>
/// <returns></returns>
public static List<DbConnectionConfig> GetDbConfig(List<DbConnectionConfig> dbConnection)

/// <summary>
/// 
/// </summary>
/// <param name="connectionConfigs"></param>
/// <returns></returns>
public static SqlSugarScope GetSqlSugarScope(List<DbConnectionConfig> connectionConfigs)

/// <summary>
/// 配置连接属性
/// </summary>
/// <param name="config"></param>
/// <param name="dataInfoCacheService"></param>
public static void SetDbConfig(DbConnectionConfig config, ICacheService dataInfoCacheService = null)

11、更多扩展

11.1、分页扩展
 /// <summary>
 /// 分页
 /// </summary>
 /// <typeparam name="T"></typeparam>
 /// <param name="query"></param>
 /// <param name="pageIndex"></param>
 /// <param name="pageSize"></param>
 /// <param name="isMapper"></param>
 /// <returns></returns>
 public static async Task<PageResult<T>> ToPageAsync<T>(this ISugarQueryable<T> query, int pageIndex, int pageSize, bool isMapper = true) 
 /// <summary>
 /// 分页
 /// </summary>
 /// <typeparam name="T"></typeparam>
 /// <typeparam name="Dto"></typeparam>
 /// <param name="query"></param>
 /// <param name="pageIndex"></param>
 /// <param name="pageSize"></param>
 /// <returns></returns>
 public static async Task<PageResult<Dto>> ToPageAsync<T, Dto>(this ISugarQueryable<T> query, int pageIndex, int pageSize) 

 /// <summary>
 /// 分页
 /// </summary>
 /// <typeparam name="T"></typeparam>
 /// <typeparam name="Dto"></typeparam>
 /// <param name="query"></param>
 /// <param name="pageParam"></param>
 /// <returns></returns>
 public static async Task<PageResult<Dto>> ToPageAsync<T, Dto>(this ISugarQueryable<T> query, PageParam pageParam) 
11.2、 分页拓展类
/// <summary>
/// 分页拓展
/// </summary>
/// <param name="entity"></param>
/// <param name="pageIndex"></param>
/// <param name="pageSize"></param>
/// <returns></returns>
public static SqlSugarPagedList<TEntity> ToPagedList<TEntity>(this ISugarQueryable<TEntity> entity, int pageIndex, int pageSize)
    where TEntity : new() 

/// <summary>
/// 分页拓展
/// </summary>
/// <param name="entity"></param>
/// <param name="pageIndex"></param>
/// <param name="pageSize"></param>
/// <returns></returns>
public static async Task<SqlSugarPagedList<TEntity>> ToPagedListAsync<TEntity>(this ISugarQueryable<TEntity> entity, int pageIndex, int pageSize)
    where TEntity : new() 
/// <summary>
/// 分页泛型集合
/// </summary>
/// <typeparam name="TEntity"></typeparam>
public class SqlSugarPagedList<TEntity>
    where TEntity : new()
{
    /// <summary>
    /// 页码
    /// </summary>
    public int Page { get; set; }

    /// <summary>
    /// 页容量
    /// </summary>
    public int PageSize { get; set; }

    /// <summary>
    /// 总条数
    /// </summary>
    public int Total { get; set; }

    /// <summary>
    /// 总页数
    /// </summary>
    public int TotalPages { get; set; }

    /// <summary>
    /// 当前页集合
    /// </summary>
    public IEnumerable<TEntity> Items { get; set; }

    /// <summary>
    /// 是否有上一页
    /// </summary>
    public bool HasPrevPage { get; set; }

    /// <summary>
    /// 是否有下一页
    /// </summary>
    public bool HasNextPage { get; set; }
}
11.3、SqlSugar 仓储实现类
 /// <summary>
 /// 判断类型是否实现某个泛型
 /// </summary>
 /// <param name="type">类型</param>
 /// <param name="generic">泛型类型</param>
 /// <returns>bool</returns>
 public static bool HasImplementedRawGeneric(this Type type, Type generic)
 /// <summary>
 /// 获取总数
 /// </summary>
 /// <typeparam name="TEntity"></typeparam>
 /// <param name="db"></param>
 /// <param name="whereExpression"></param>
 /// <returns></returns>
 public static int Count<TEntity>(this SqlSugarClient db, Expression<Func<TEntity, bool>> whereExpression) where TEntity : class, new()

 /// <summary>
 /// 获取总数
 /// </summary>
 /// <typeparam name="TEntity"></typeparam>
 /// <param name="db"></param>
 /// <param name="whereExpression"></param>
 /// <returns></returns>
 public static Task<int> CountAsync<TEntity>(this SqlSugarClient db, Expression<Func<TEntity, bool>> whereExpression) where TEntity : class, new()
 /// <summary>
 /// 检查是否存在
 /// </summary>
 /// <typeparam name="TEntity"></typeparam>
 /// <param name="db"></param>
 /// <param name="whereExpression"></param>
 /// <returns></returns>
 public static bool Any<TEntity>(this SqlSugarClient db, Expression<Func<TEntity, bool>> whereExpression) where TEntity : class, new()

 /// <summary>
 /// 检查是否存在
 /// </summary>
 /// <typeparam name="TEntity"></typeparam>
 /// <param name="db"></param>
 /// <param name="whereExpression"></param>
 /// <returns></returns>
 public static async Task<bool> AnyAsync<TEntity>(this SqlSugarClient db, Expression<Func<TEntity, bool>> whereExpression) where TEntity : class, new()
 /// <summary>
 /// 通过主键获取实体
 /// </summary>
 /// <typeparam name="TEntity"></typeparam>
 /// <param name="db"></param>
 /// <param name="Id"></param>
 /// <returns></returns>
 public static TEntity Single<TEntity>(this SqlSugarClient db, dynamic Id) where TEntity : class, new()

 /// <summary>
 /// 获取一个实体
 /// </summary>
 /// <typeparam name="TEntity"></typeparam>
 /// <param name="db"></param>
 /// <param name="whereExpression"></param>
 /// <returns></returns>
 public static TEntity Single<TEntity>(this SqlSugarClient db, Expression<Func<TEntity, bool>> whereExpression) where TEntity : class, new()

 /// <summary>
 /// 获取一个实体
 /// </summary>
 /// <typeparam name="TEntity"></typeparam>
 /// <param name="db"></param>
 /// <param name="whereExpression"></param>
 /// <returns></returns>
 public static Task<TEntity> SingleAsync<TEntity>(this SqlSugarClient db, Expression<Func<TEntity, bool>> whereExpression) where TEntity : class, new()
 /// <summary>
 /// 获取一个实体
 /// </summary>
 /// <typeparam name="TEntity"></typeparam>
 /// <param name="db"></param>
 /// <param name="whereExpression"></param>
 /// <returns></returns>
 public static TEntity FirstOrDefault<TEntity>(this SqlSugarClient db, Expression<Func<TEntity, bool>> whereExpression) where TEntity : class, new()

 /// <summary>
 /// 获取一个实体
 /// </summary>
 /// <typeparam name="TEntity"></typeparam>
 /// <param name="db"></param>
 /// <param name="whereExpression"></param>
 /// <returns></returns>
 public static async Task<TEntity> FirstOrDefaultAsync<TEntity>(this SqlSugarClient db, Expression<Func<TEntity, bool>> whereExpression) where TEntity : class, new()
 /// <summary>
 /// 获取列表
 /// </summary>
 /// <typeparam name="TEntity"></typeparam>
 /// <param name="db"></param>
 /// <returns></returns>
 public static List<TEntity> ToList<TEntity>(this SqlSugarClient db) where TEntity : class, new()

 /// <summary>
 /// 获取列表
 /// </summary>
 /// <typeparam name="TEntity"></typeparam>
 /// <param name="db"></param>
 /// <param name="whereExpression"></param>
 /// <returns></returns>
 public static List<TEntity> ToList<TEntity>(this SqlSugarClient db, Expression<Func<TEntity, bool>> whereExpression) where TEntity : class, new()

 /// <summary>
 /// 获取列表
 /// </summary>
 /// <typeparam name="TEntity"></typeparam>
 /// <param name="db"></param>
 /// <param name="whereExpression"></param>
 /// <param name="orderByExpression"></param>
 /// <param name="orderByType"></param>
 /// <returns></returns>
 public static List<TEntity> ToList<TEntity>(this SqlSugarClient db, Expression<Func<TEntity, bool>> whereExpression, Expression<Func<TEntity, object>> orderByExpression = null, OrderByType orderByType = OrderByType.Asc) where TEntity : class, new()

 /// <summary>
 /// 获取列表
 /// </summary>
 /// <typeparam name="TEntity"></typeparam>
 /// <param name="db"></param>
 /// <returns></returns>
 public static Task<List<TEntity>> ToListAsync<TEntity>(this SqlSugarClient db) where TEntity : class, new()

 /// <summary>
 /// 获取列表
 /// </summary>
 /// <typeparam name="TEntity"></typeparam>
 /// <param name="db"></param>
 /// <param name="whereExpression"></param>
 /// <returns></returns>
 public static Task<List<TEntity>> ToListAsync<TEntity>(this SqlSugarClient db, Expression<Func<TEntity, bool>> whereExpression) where TEntity : class, new()

 /// <summary>
 /// 获取列表
 /// </summary>
 /// <typeparam name="TEntity"></typeparam>
 /// <param name="db"></param>
 /// <param name="whereExpression"></param>
 /// <param name="orderByExpression"></param>
 /// <param name="orderByType"></param>
 /// <returns></returns>
 public static Task<List<TEntity>> ToListAsync<TEntity>(this SqlSugarClient db, Expression<Func<TEntity, bool>> whereExpression, Expression<Func<TEntity, object>> orderByExpression = null, OrderByType orderByType = OrderByType.Asc) where TEntity : class, new()
 /// <summary>
 /// 新增一条记录
 /// </summary>
 /// <typeparam name="TEntity"></typeparam>
 /// <param name="db"></param>
 /// <param name="entity"></param>
 /// <param name="IgnoreColumns"></param>
 /// <returns></returns>
 public static int Insert<TEntity>(this SqlSugarClient db, TEntity entity, bool IgnoreColumns = true) where TEntity : class, new()

 /// <summary>
 /// 新增多条记录
 /// </summary>
 /// <typeparam name="TEntity"></typeparam>
 /// <param name="db"></param>
 /// <param name="IgnoreColumns"></param>
 /// <param name="entities"></param>
 /// <returns></returns>
 public static int Insert<TEntity>(this SqlSugarClient db, bool IgnoreColumns = true, params TEntity[] entities) where TEntity : class, new()

 /// <summary>
 /// 新增多条记录
 /// </summary>
 /// <typeparam name="TEntity"></typeparam>
 /// <param name="db"></param>
 /// <param name="entities"></param>
 /// <param name="IgnoreColumns"></param>
 /// <returns></returns>
 public static int Insert<TEntity>(this SqlSugarClient db, IEnumerable<TEntity> entities, bool IgnoreColumns = true) where TEntity : class, new()

 /// <summary>
 /// 新增一条记录返回自增Id
 /// </summary>
 /// <typeparam name="TEntity"></typeparam>
 /// <param name="db"></param>
 /// <param name="insertObj"></param>
 /// <param name="IgnoreColumns"></param>
 /// <returns></returns>
 public static int InsertReturnIdentity<TEntity>(this SqlSugarClient db, TEntity insertObj, bool IgnoreColumns = true) where TEntity : class, new()

 /// <summary>
 /// 新增一条记录
 /// </summary>
 /// <typeparam name="TEntity"></typeparam>
 /// <param name="db"></param>
 /// <param name="entity"></param>
 /// <param name="IgnoreColumns"></param>
 /// <returns></returns>
 public static Task<int> InsertAsync<TEntity>(this SqlSugarClient db, TEntity entity, bool IgnoreColumns = true) where TEntity : class, new()

 /// <summary>
 /// 新增多条记录
 /// </summary>
 /// <typeparam name="TEntity"></typeparam>
 /// <param name="db"></param>
 /// <param name="IgnoreColumns"></param>
 /// <param name="entities"></param>
 /// <returns></returns>
 public static Task<int> InsertAsync<TEntity>(this SqlSugarClient db, bool IgnoreColumns = true, params TEntity[] entities) where TEntity : class, new()

 /// <summary>
 /// 新增多条记录
 /// </summary>
 /// <typeparam name="TEntity"></typeparam>
 /// <param name="db"></param>
 /// <param name="entities"></param>
 /// <param name="IgnoreColumns"></param>
 /// <returns></returns>
 public static Task<int> InsertAsync<TEntity>(this SqlSugarClient db, IEnumerable<TEntity> entities, bool IgnoreColumns = true) where TEntity : class, new()

 /// <summary>
 /// 新增一条记录返回自增Id
 /// </summary>
 /// <typeparam name="TEntity"></typeparam>
 /// <param name="db"></param>
 /// <param name="entity"></param>
 /// <param name="IgnoreColumns"></param>
 /// <returns></returns>
 public static async Task<long> InsertReturnIdentityAsync<TEntity>(this SqlSugarClient db, TEntity entity, bool IgnoreColumns = true) where TEntity : class, new()
     
 /// <summary>
 /// 更新一条记录
 /// </summary>
 /// <typeparam name="TEntity"></typeparam>
 /// <param name="db"></param>
 /// <param name="entity"></param>
 /// <param name="IgnoreColumns"></param>
 /// <returns></returns>
 public static int Update<TEntity>(this SqlSugarClient db, TEntity entity, bool IgnoreColumns = true) where TEntity : class, new()

 /// <summary>
 /// 更新多条记录
 /// </summary>
 /// <typeparam name="TEntity"></typeparam>
 /// <param name="db"></param>
 /// <param name="IgnoreColumns"></param>
 /// <param name="entities"></param>
 /// <returns></returns>
 public static int Update<TEntity>(this SqlSugarClient db, bool IgnoreColumns = true, params TEntity[] entities) where TEntity : class, new()

 /// <summary>
 /// 更新多条记录
 /// </summary>
 /// <typeparam name="TEntity"></typeparam>
 /// <param name="db"></param>
 /// <param name="entities"></param>
 /// <param name="IgnoreColumns"></param>
 /// <returns></returns>
 public static int Update<TEntity>(this SqlSugarClient db, IEnumerable<TEntity> entities, bool IgnoreColumns = true) where TEntity : class, new()

 /// <summary>
 /// 更新一条记录
 /// </summary>
 /// <typeparam name="TEntity"></typeparam>
 /// <param name="db"></param>
 /// <param name="entity"></param>
 /// <param name="IgnoreColumns"></param>
 /// <returns></returns>
 public static Task<int> UpdateAsync<TEntity>(this SqlSugarClient db, TEntity entity, bool IgnoreColumns = true) where TEntity : class, new()

 /// <summary>
 /// 无主键更新一条记录
 /// </summary>    
 /// <typeparam name="TEntity"></typeparam>
 /// <param name="db"></param>
 /// <param name="entity">更新的实体</param>
 /// <param name="columns">根据那些字段更新</param>
 /// <param name="IgnoreColumns"></param>
 /// <returns></returns>
 public static Task<int> UpdateNoPrimaryKey<TEntity>(this SqlSugarClient db, TEntity entity, Expression<Func<TEntity, object>> columns, bool IgnoreColumns = true) where TEntity : class, new()

 /// <summary>
 /// 无主键更新一条记录
 /// </summary>
 /// <typeparam name="TEntity"></typeparam>
 /// <param name="db"></param>
 /// <param name="entity">更新的实体</param>
 /// <param name="columns">根据那些字段更新</param>
 /// <param name="IgnoreColumns"></param>
 /// <returns></returns>
 public static Task<int> UpdateNoPrimaryKeyAsync<TEntity>(this SqlSugarClient db, TEntity entity, Expression<Func<TEntity, object>> columns, bool IgnoreColumns = true) where TEntity : class, new()

 /// <summary>
 /// 无主键更新多条记录
 /// </summary>
 /// <typeparam name="TEntity"></typeparam>
 /// <param name="db"></param>
 /// <param name="entitys">更新的实体</param>
 /// <param name="columns">根据那些字段更新</param>
 /// <param name="IgnoreColumns"></param>
 /// <returns></returns>
 public static Task<int> UpdateNoPrimaryKey<TEntity>(this SqlSugarClient db, List<TEntity> entitys, Expression<Func<TEntity, object>> columns, bool IgnoreColumns = true) where TEntity : class, new()

 /// <summary>
 /// 无主键更新多条记录
 /// </summary>
 /// <typeparam name="TEntity"></typeparam>
 /// <param name="db"></param>
 /// <param name="entitys">更新的实体</param>
 /// <param name="columns">根据那些字段更新</param> 
 /// <param name="IgnoreColumns"></param>
 /// <returns></returns>
 public static Task<int> UpdateNoPrimaryKeyAsync<TEntity>(this SqlSugarClient db, List<TEntity> entitys, Expression<Func<TEntity, object>> columns, bool IgnoreColumns = true) where TEntity : class, new()

 /// <summary>
 /// 更新多条记录
 /// </summary>
 /// <typeparam name="TEntity"></typeparam>
 /// <param name="db"></param>
 /// <param name="IgnoreColumns"></param>
 /// <param name="entities"></param>
 /// <returns></returns>
 public static Task<int> UpdateAsync<TEntity>(this SqlSugarClient db, bool IgnoreColumns = true, params TEntity[] entities) where TEntity : class, new()

 /// <summary>
 /// 更新多条记录
 /// </summary>
 /// <typeparam name="TEntity"></typeparam>
 /// <param name="db"></param>
 /// <param name="entities"></param>
 /// <param name="IgnoreColumns"></param>
 /// <returns></returns>
 public static Task<int> UpdateAsync<TEntity>(this SqlSugarClient db, IEnumerable<TEntity> entities, bool IgnoreColumns = true) where TEntity : class, new()
     
 /// <summary>
 /// 删除一条记录
 /// </summary>
 /// <typeparam name="TEntity"></typeparam>
 /// <param name="db"></param>
 /// <param name="entity"></param>
 /// <returns></returns>
 public static int Delete<TEntity>(this SqlSugarClient db, TEntity entity) where TEntity : class, new()

 /// <summary>
 /// 删除一条记录
 /// </summary>
 /// <typeparam name="TEntity"></typeparam>
 /// <param name="db"></param>
 /// <param name="key"></param>
 /// <returns></returns>
 public static int Delete<TEntity>(this SqlSugarClient db, object key) where TEntity : class, new()

 /// <summary>
 /// 删除多条记录
 /// </summary>
 /// <typeparam name="TEntity"></typeparam>
 /// <param name="db"></param>
 /// <param name="keys"></param>
 /// <returns></returns>
 public static int Delete<TEntity>(this SqlSugarClient db, params object[] keys) where TEntity : class, new()

 /// <summary>
 /// 自定义条件删除记录
 /// </summary>
 /// <typeparam name="TEntity"></typeparam>
 /// <param name="db"></param>
 /// <param name="whereExpression"></param>
 /// <returns></returns>
 public static int Delete<TEntity>(this SqlSugarClient db, Expression<Func<TEntity, bool>> whereExpression) where TEntity : class, new()

 /// <summary>
 /// 删除一条记录
 /// </summary>
 /// <typeparam name="TEntity"></typeparam>
 /// <param name="db"></param>
 /// <param name="entity"></param>
 /// <returns></returns>
 public static Task<int> DeleteAsync<TEntity>(this SqlSugarClient db, TEntity entity) where TEntity : class, new()

 /// <summary>
 /// 删除一条记录
 /// </summary>
 /// <typeparam name="TEntity"></typeparam>
 /// <param name="db"></param>
 /// <param name="key"></param>
 /// <returns></returns>
 public static Task<int> DeleteAsync<TEntity>(this SqlSugarClient db, object key) where TEntity : class, new()

 /// <summary>
 /// 删除多条记录
 /// </summary>
 /// <typeparam name="TEntity"></typeparam>
 /// <param name="db"></param>
 /// <param name="keys"></param>
 /// <returns></returns>
 public static Task<int> DeleteAsync<TEntity>(this SqlSugarClient db, params object[] keys) where TEntity : class, new()

 /// <summary>
 /// 自定义条件删除记录
 /// </summary>
 /// <typeparam name="TEntity"></typeparam>
 /// <param name="db"></param>
 /// <param name="whereExpression"></param>
 /// <returns></returns>
 public static async Task<int> DeleteAsync<TEntity>(this SqlSugarClient db, Expression<Func<TEntity, bool>> whereExpression) where TEntity : class, new()
 /// <summary>
 /// 构建查询分析器
 /// </summary>
 /// <typeparam name="TEntity"></typeparam>
 /// <param name="db"></param>
 /// <returns></returns>
 public static ISugarQueryable<TEntity> AsQueryable<TEntity>(this SqlSugarClient db) where TEntity : class, new()

 /// <summary>
 /// 构建查询分析器
 /// </summary>
 /// <typeparam name="TEntity"></typeparam>
 /// <param name="db"></param>
 /// <param name="predicate"></param>
 /// <returns></returns>
 public static ISugarQueryable<TEntity> AsQueryable<TEntity>(this SqlSugarClient db, Expression<Func<TEntity, bool>> predicate) where TEntity : class, new()

 /// <summary>
 /// 直接返回数据库结果
 /// </summary>
 /// <typeparam name="TEntity"></typeparam>
 /// <param name="db"></param>
 /// <returns></returns>
 public static List<TEntity> AsEnumerable<TEntity>(this SqlSugarClient db) where TEntity : class, new()

 /// <summary>
 /// 直接返回数据库结果
 /// </summary>
 /// <typeparam name="TEntity"></typeparam>
 /// <param name="db"></param>
 /// <param name="predicate"></param>
 /// <returns></returns>
 public static List<TEntity> AsEnumerable<TEntity>(this SqlSugarClient db, Expression<Func<TEntity, bool>> predicate) where TEntity : class, new()

 /// <summary>
 /// 直接返回数据库结果
 /// </summary>
 /// <typeparam name="TEntity"></typeparam>
 /// <param name="db"></param>
 /// <returns></returns>
 public static Task<List<TEntity>> AsAsyncEnumerable<TEntity>(this SqlSugarClient db) where TEntity : class, new()

 /// <summary>
 /// 直接返回数据库结果
 /// </summary>
 /// <typeparam name="TEntity"></typeparam>
 /// <param name="db"></param>
 /// <param name="predicate"></param>
 /// <returns></returns>
 public static Task<List<TEntity>> AsAsyncEnumerable<TEntity>(this SqlSugarClient db, Expression<Func<TEntity, bool>> predicate) where TEntity : class, new()
     
 /// <summary>
 /// 
 /// </summary>
 /// <typeparam name="TEntity"></typeparam>
 /// <param name="db"></param>
 /// <param name="whereExpression"></param>
 /// <returns></returns>
 public static bool IsExists<TEntity>(this SqlSugarClient db, Expression<Func<TEntity, bool>> whereExpression) where TEntity : class, new()
     
 /// <summary>
 /// 
 /// </summary>
 /// <typeparam name="TEntity"></typeparam>
 /// <param name="db"></param>
 /// <param name="whereExpression"></param>
 /// <returns></returns>
 public static Task<bool> IsExistsAsync<TEntity>(this SqlSugarClient db, Expression<Func<TEntity, bool>> whereExpression) where TEntity : class, new() 
     
 /// <summary>
 /// 实体假删除 _rep.FakeDelete(entity)
 /// </summary>
 /// <typeparam name="T"></typeparam>
 /// <param name="repository"></param>
 /// <param name="entity"></param>
 /// <returns></returns>
 public static int FakeDelete<T>(this ISugarRepository repository, T entity) where T : EntityBase, new() 

 /// <summary>
 /// 实体假删除 db.FakeDelete(entity)
 /// </summary>
 /// <typeparam name="T"></typeparam>
 /// <param name="db"></param>
 /// <param name="entity"></param>
 /// <returns></returns>
 public static int FakeDelete<T>(this ISqlSugarClient db, T entity) where T : EntityBase, new() 

 /// <summary>
 /// 实体假删除异步 _rep.FakeDeleteAsync(entity)
 /// </summary>
 /// <typeparam name="T"></typeparam>
 /// <param name="repository"></param>
 /// <param name="entity"></param>
 /// <returns></returns>
 public static Task<int> FakeDeleteAsync<T>(this ISugarRepository repository, T entity) where T : EntityBase, new() 

 /// <summary>
 /// 实体假删除 db.FakeDelete(entity)
 /// </summary>
 /// <typeparam name="T"></typeparam>
 /// <param name="db"></param>
 /// <param name="entity"></param>
 /// <returns></returns>
 public static Task<int> FakeDeleteAsync<T>(this ISqlSugarClient db, T entity) where T : EntityBase, new() 

 /// <summary>
 /// 排序方式(默认降序)
 /// </summary>
 /// <param name="queryable"></param>
 /// <param name="pageInput"> </param>
 /// <param name="defualtSortField"> 默认排序字段 </param>
 /// <param name="descSort"> 是否降序 </param>
 /// <returns> </returns>
 public static ISugarQueryable<T> OrderBuilder<T, Input>(this ISugarQueryable<T> queryable, Input pageInput, string defualtSortField = "Id", bool descSort = true) where Input : PageParam,new() 

 /// <summary>
 /// 更新实体并记录差异日志 _rep.UpdateWithDiffLog(entity)
 /// </summary>
 /// <typeparam name="T"></typeparam>
 /// <param name="repository"></param>
 /// <param name="entity"></param>
 /// <param name="ignoreAllNullColumns"></param>
 /// <returns></returns>
 public static int UpdateWithDiffLog<T>(this ISugarRepository repository, T entity, bool ignoreAllNullColumns = true) where T : class, new() 

 /// <summary>
 /// 更新实体并记录差异日志 _rep.UpdateWithDiffLog(entity)
 /// </summary>
 /// <typeparam name="T"></typeparam>
 /// <param name="db"></param>
 /// <param name="entity"></param>
 /// <param name="ignoreAllNullColumns"></param>
 /// <returns></returns>
 public static int UpdateWithDiffLog<T>(this ISqlSugarClient db, T entity, bool ignoreAllNullColumns = true) where T : class, new() 

 /// <summary>
 /// 更新实体并记录差异日志 _rep.UpdateWithDiffLogAsync(entity)
 /// </summary>
 /// <typeparam name="T"></typeparam>
 /// <param name="repository"></param>
 /// <param name="entity"></param>
 /// <param name="ignoreAllNullColumns"></param>
 /// <returns></returns>
 public static Task<int> UpdateWithDiffLogAsync<T>(this ISugarRepository repository, T entity, bool ignoreAllNullColumns = true) where T : class, new() 

 /// <summary>
 /// 更新实体并记录差异日志 _rep.UpdateWithDiffLogAsync(entity)
 /// </summary>
 /// <typeparam name="T"></typeparam>
 /// <param name="db"></param>
 /// <param name="entity"></param>
 /// <param name="ignoreAllNullColumns"></param>
 /// <returns></returns>
 public static Task<int> UpdateWithDiffLogAsync<T>(this ISqlSugarClient db, T entity, bool ignoreAllNullColumns = true) where T : class, new() 

 /// <summary>
 /// 新增实体并记录差异日志 _rep.InsertWithDiffLog(entity)
 /// </summary>
 /// <typeparam name="T"></typeparam>
 /// <param name="repository"></param>
 /// <param name="entity"></param>
 /// <returns></returns>
 public static int InsertWithDiffLog<T>(this ISugarRepository repository, T entity) where T : class, new() 

 /// <summary>
 /// 新增实体并记录差异日志 _rep.InsertWithDiffLog(entity)
 /// </summary>
 /// <typeparam name="T"></typeparam>
 /// <param name="db"></param>
 /// <param name="entity"></param>
 /// <returns></returns>
 public static int InsertWithDiffLog<T>(this ISqlSugarClient db, T entity) where T : class, new() 

 /// <summary>
 /// 新增实体并记录差异日志 _rep.InsertWithDiffLogAsync(entity)
 /// </summary>
 /// <typeparam name="T"></typeparam>
 /// <param name="repository"></param>
 /// <param name="entity"></param>
 /// <returns></returns>
 public static Task<int> InsertWithDiffLogAsync<T>(this ISugarRepository repository, T entity) where T : class, new() 

 /// <summary>
 /// 新增实体并记录差异日志 _rep.InsertWithDiffLog(entity)
 /// </summary>
 /// <typeparam name="T"></typeparam>
 /// <param name="db"></param>
 /// <param name="entity"></param>
 /// <returns></returns>
 public static Task<int> InsertWithDiffLogAsync<T>(this ISqlSugarClient db, T entity) where T : class, new() 
Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (3)

Showing the top 3 NuGet packages that depend on RuoVea.ExSugar:

Package Downloads
RuoVea.OmiApi.Config

参数配置接口

RuoVea.OmiApi.Dict

字典管理

RuoVea.OmiApi.Log

日志管理

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
8.0.0.18 25 18 hours ago
8.0.0.17 314 16 days ago
8.0.0.13 308 20 days ago
8.0.0.12 317 24 days ago
8.0.0.11 312 2 months ago
8.0.0.10 123 6 months ago
8.0.0.9 108 6 months ago
8.0.0.8 100 6 months ago
8.0.0.7 107 6 months ago
8.0.0.6 111 7 months ago
8.0.0.5 112 7 months ago
8.0.0.4 102 7 months ago
8.0.0.3 116 7 months ago
8.0.0.2 123 7 months ago
8.0.0.1 124 8 months ago
8.0.0 128 8 months ago
7.0.0.18 21 18 hours ago
7.0.0.17 335 16 days ago
7.0.0.13 328 20 days ago
7.0.0.12 320 24 days ago
7.0.0.11 414 2 months ago
7.0.0.10 96 6 months ago
7.0.0.9 97 6 months ago
7.0.0.8 91 6 months ago
7.0.0.7 111 6 months ago
7.0.0.6 100 7 months ago
7.0.0.5 108 7 months ago
7.0.0.4 109 7 months ago
7.0.0.3 104 7 months ago
7.0.0.2 120 7 months ago
7.0.0.1 117 8 months ago
7.0.0 121 8 months ago
6.0.18.18 27 18 hours ago
6.0.18.17 405 16 days ago
6.0.18.16 398 20 days ago
6.0.18.15 370 24 days ago
6.0.18.14 549 2 months ago
6.0.18.13 2,702 6 months ago
6.0.18.12 439 6 months ago
6.0.18.11 99 6 months ago
6.0.18.10 265 6 months ago
6.0.18.9 595 7 months ago
6.0.18.8 181 7 months ago
6.0.18.7 112 7 months ago
6.0.18.6 175 7 months ago
6.0.18.5 131 8 months ago
6.0.18.4 109 8 months ago
6.0.18.3 134 8 months ago
6.0.18.2 151 3/13/2024
6.0.18.1 143 3/13/2024
6.0.18 271 3/25/2023
6.0.17 254 3/25/2023
6.0.16 254 3/25/2023
6.0.15 266 3/24/2023
6.0.13 244 3/15/2023
6.0.12 243 3/14/2023
6.0.11 261 3/14/2023
6.0.10 288 3/11/2023
6.0.9 521 8/22/2022
6.0.8 490 8/18/2022
6.0.7 467 8/17/2022
6.0.6 494 8/16/2022
6.0.5 511 7/5/2022
6.0.4 514 7/5/2022
6.0.3 542 6/10/2022
6.0.2 586 4/11/2022
6.0.1 596 4/11/2022
6.0.0 608 3/18/2022
5.0.1.7 21 18 hours ago
5.0.1.6 138 2 months ago
5.0.1.5 95 6 months ago
5.0.1.4 97 6 months ago
5.0.1.3 94 6 months ago
5.0.1.2 99 6 months ago
5.0.1.1 106 7 months ago
5.0.1 665 3/18/2022
5.0.0 581 3/18/2022