# freesql-simple-extension **Repository Path**: tyu4gej/freesql-simple-extension ## Basic Information - **Project Name**: freesql-simple-extension - **Description**: freesql 简单实体快速查询扩展 - **Primary Language**: C# - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2025-07-16 - **Last Updated**: 2025-08-22 ## Categories & Tags **Categories**: Uncategorized **Tags**: Csharp, freesql ## README # FreesqlSimpleExtension 这是一个 FreeSQL 扩展库,旨在简化实体操作和查询构建过程。通过提供一组便捷的扩展方法,使开发者能够更高效地进行数据操作。 ## 仓库地址 [GITHUB](https://github.com/tanch007/freesql-simple-extension) [GITEE](https://gitee.com/tyu4gej/freesql-simple-extension) ## 特性 - 提供便捷的实体修改方法。 - 支持通过对象模型进行查询构建。 - 提供多种属性特性用于定义查询条件。 ## 安装 请确保你已经在项目中安装了 [FreeSQL](https://github.com/dotnetcore/FreeSql)。 `dotnet add package FreesqlSimpleExtension ` ## 使用方法 ### 实体定义 ```csharp public class TestEntity { [Column(IsPrimary = true, IsIdentity = true)] public int Id { get; set; } public string Name { get; set; } public int Age { get; set; } public DateTime CreateTime { get; set; } } ``` ### 查询输入模型定义 ```csharp public class TestQueryInput { [FsContains] public string Name { get; set; } [FsArrayContains(nameof(TestEntity.Name))] public List NameArray { get; set; } [FsEq] public int? AgeEq { get; set; } [FsArrayContains(nameof(TestEntity.Age))] public List AgeArray { get; set; } [FsGte(nameof(TestEntity.Age))] public int? AgeGte { get; set; } [FsLte(nameof(TestEntity.Age))] public int? AgeLte { get; set; } [FsOrderBy(nameof(TestEntity.Age))] public List OrderBy { get; set; } = [nameof(TestEntity.Age)]; [FsDateEq] public DateTime? CreateTime { get; set; } } ``` ### 查询使用示例 ```csharp // 初始化FreeSql实例 var freeSql = new FreeSqlBuilder() .UseConnectionString(DataType.Sqlite, @"Data Source=test.db") .UseAutoSyncStructure(true) .Build(); // 名称包含查询 var query1 = new TestQueryInput { Name = "三" }; var result1 = await freeSql.Select().QueryEntity(query1).FirstAsync(); // 名称数组包含查询 var query2 = new TestQueryInput { NameArray = ["张三", "李四"] }; var result2 = await freeSql.Select().QueryEntity(query2).ToListAsync(); // 年龄范围查询 var query3 = new TestQueryInput { AgeGte = 20, AgeLte = 30 }; var result3 = await freeSql.Select().QueryEntity(query3).ToListAsync(); // 日期相等查询 var query4 = new TestQueryInput { CreateTime = new DateTime(2025, 1, 2) }; var result4 = await freeSql.Select().QueryEntity(query4).FirstAsync(); // 排序查询 var query5 = new TestQueryInput { OrderBy = ["Age desc"] }; var result5 = await freeSql.Select().QueryEntity(query5).ToListAsync(); ``` ### 修改示例 你可以使用 `ModifyEntity` 方法来更新实体对象的属性值。 ```csharp entity.ModifyEntity(updateModel, isUpdateNull: true, ignoreFields: new[] { "Id" }); ``` ### 查询构建 你可以使用 `QueryEntity` 方法来根据对象模型构建查询条件。 ```csharp var result = source.QueryEntity(queryModel); ``` ## 属性特性 该扩展库提供了一系列属性特性,用于在查询中定义不同的条件: - `FsEqAttribute`: 等于指定字段。 - `FsGtAttribute`: 大于指定字段。 - `FsGteAttribute`: 大于等于指定字段。 - `FsLtAttribute`: 小于指定字段。 - `FsLteAttribute`: 小于等于指定字段。 - `FsContainsAttribute`: 包含指定字段。 - `FsArrayContainsAttribute`: 数组包含指定字段。 - `FsDateEqAttribute`: 日期等于指定字段。 - `FsOrderByAttribute`: 定义排序字段。 - `FsNullAttribute`: 查询空值字段。 - `FsNotNullAttribute`: 查询非空字段。 - `FsRangeAttribute`: 查询范围筛选字段。 ## 贡献 欢迎贡献代码和改进。请提交 Pull Request 到主仓库。 ## 许可证 本项目采用 MIT 许可证。详情请查看 [LICENSE](LICENSE) 文件。