Skip to content

这是一个 FreeSQL 扩展库,旨在简化实体操作和查询构建过程。通过提供一组便捷的扩展方法,使开发者能够更高效地进行数据操作。

License

Notifications You must be signed in to change notification settings

tanch007/freesql-simple-extension

Repository files navigation

FreesqlSimpleExtension

这是一个 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 文件。

About

这是一个 FreeSQL 扩展库,旨在简化实体操作和查询构建过程。通过提供一组便捷的扩展方法,使开发者能够更高效地进行数据操作。

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages