这是一个 FreeSQL 扩展库,旨在简化实体操作和查询构建过程。通过提供一组便捷的扩展方法,使开发者能够更高效地进行数据操作。
- 提供便捷的实体修改方法。
- 支持通过对象模型进行查询构建。
- 提供多种属性特性用于定义查询条件。
请确保你已经在项目中安装了 FreeSQL。
dotnet add package FreesqlSimpleExtension
你可以使用 ModifyEntity
方法来更新实体对象的属性值。
entity.ModifyEntity(updateModel, isUpdateNull: true, ignoreFields: new[] { "Id" });
你可以使用 QueryEntity
方法来根据对象模型构建查询条件。
var result = source.QueryEntity(queryModel);
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; }
}
public class TestQueryInput
{
[FsContains]
public string Name { get; set; }
[FsArrayContains(nameof(TestEntity.Name))]
public List<string> NameArray { get; set; }
[FsEq]
public int? AgeEq { get; set; }
[FsArrayContains(nameof(TestEntity.Age))]
public List<int> 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<string> OrderBy { get; set; } = [nameof(TestEntity.Age)];
[FsDateEq]
public DateTime? CreateTime { get; set; }
}
// 初始化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<TestEntity>().QueryEntity(query1).FirstAsync();
// 名称数组包含查询
var query2 = new TestQueryInput { NameArray = ["张三", "李四"] };
var result2 = await freeSql.Select<TestEntity>().QueryEntity(query2).ToListAsync();
// 年龄范围查询
var query3 = new TestQueryInput { AgeGte = 20, AgeLte = 30 };
var result3 = await freeSql.Select<TestEntity>().QueryEntity(query3).ToListAsync();
// 日期相等查询
var query4 = new TestQueryInput { CreateTime = new DateTime(2025, 1, 2) };
var result4 = await freeSql.Select<TestEntity>().QueryEntity(query4).FirstAsync();
// 排序查询
var query5 = new TestQueryInput { OrderBy = ["Age desc"] };
var result5 = await freeSql.Select<TestEntity>().QueryEntity(query5).ToListAsync();
该扩展库提供了一系列属性特性,用于在查询中定义不同的条件:
FsEqAttribute
: 等于指定字段。FsGtAttribute
: 大于指定字段。FsGteAttribute
: 大于等于指定字段。FsLtAttribute
: 小于指定字段。FsLteAttribute
: 小于等于指定字段。FsContainsAttribute
: 包含指定字段。FsArrayContainsAttribute
: 数组包含指定字段。FsDateEqAttribute
: 日期等于指定字段。FsOrderByAttribute
: 定义排序字段。
欢迎贡献代码和改进。请提交 Pull Request 到主仓库。
本项目采用 MIT 许可证。详情请查看 LICENSE 文件。