Squirrel Framework 1.0.15 说明文档

Squirrel 有松鼠、贮藏的意思。Squirrel Framework 正致力于让你轻盈、快速地构建基于 MongoDB / Azure Cosmos DB 的应用程序。


如何获取并使用?


历史版本说明


新版本 1.0.15 改进列表

# 全局改进

  1. 修复 Unit Test Project 无法正常编译的问题(原因是由于测试工程及相关工程分别通过 Nuget 方式及 Project Reference 方式同时引用了已发布的 Domain.Model 项目,导致循环引用)
  2. 将测试工程从 MSTest 框架迁移为 XUnit Test 框架,并更新测试用例
  3. 为 XUnit 提供一个 Owner 标签的扩展
  4. 更改数据库连接串配置文件的配置方法,现在将默认使用 mongodbsettings.json 作为数据库连接串及默认数据库名的配置。原配置文件 Config/mongodb.config 及 redis.config 将于下一个版本废弃。
  5. 提供一个基于 ASP.NET Core Web API 的示例程序,请查看这里

# SquirrelFramework – 发布 1.0.15 版本

  1. 提供自动分库/分表机制。通过设定 RepositoryContext 上下文对象,绑定当前线程的分库信息,自动实现分库或分表,我们可以将其应用于 Tenant 租户分库或按月分表等需求,你只需在程序初始化时设定基本信息,并为具体用户访问时,根据业务逻辑绑定 Tenant 信息 或 其他分表信息即可
    
    RepositoryContext.InitializePartitionSupportLevel(
        PartitionLevel.CollectionLevel);
    
    RepositoryContext.InitializeCollectionLevelParams(
        "{0:collectionBaseName}_{1:currentPartitionName}");
    
    RepositoryContext.BindCurrentPartition("TenantAlpha");
    // OR
    // RepositoryContext.BindCurrentPartition("201901");
    
    
  2. 修改 MongoDB _id 与 实体基类 Id 字段的映射配置,MongoDB 改用 ObjectId 类型进行存储(而不是 string 类型),实体类 Id 字段依然选择使用 string 类型表示。ObjectId 类型的选择亦可提升主键查询效率及分布式场景的可靠性
  3. 开放基于 Mongo Database Object 的命令执行方法,方法签名如下:
    
    public IMongoDatabase GetMongoDatabaseObject(string databaseName = "")
    
    

    从现在起,你可以这样执行 Command:

    
    var dbObject = this.TestCrudRepository.GetMongoDatabaseObject();
    
    // 从删库到跑路
    var dropDatabaseCommand = new JsonCommand<BsonDocument>(
        "{ dropDatabase: 1 }");
    dbObject.RunCommand(dropDatabaseCommand);
    
    
  4. 开放基于 Linq 的查询方法,方法签名如下:
    
    public IMongoQueryable<TDomain> AsQueryable(string collectionName)
    
    

    从现在起,你可以这样查询:

    
                var regex = new Regex("hendry", RegexOptions.IgnoreCase);
                var collection = this.TestCrudRepository.AsQueryable();
    
                var query = from u in collection
                            where regex.IsMatch(u.Name) && u.Age < 18
                            orderby u.Name
                            select u;
    
                Assert.Equal(1, query.Count());
    
    

    * 目前 Squirrel Framework 已支持 定制封装LinqLambdaMongo Database Object Command 四种查询方式,并且通过 Linq 查询,我们可以直接获取查询结果的部分字段,或进行连表查询,具体方式请参考《Squirrel Framework 查询入门》进行了解

  5. 提供数据库检查状态确认方法,方法签名如下:
    
    public bool Ping()
    
    

未来版本计划

下一版本 1.0.16

  1. 为所有公开方法提供调用说明,并构建一个方法说明站点
  2. 进一步增强 Get Partial Fields 机制,允许对 MongoDB 某表的部分字段进行查询(泛型模板 及 dynamic 方式),目前只能通过 Linq 查询方式完成这一需求
  3. 进一步增强关联查询机制,目前只能通过 Linq 查询方式完成这一需求,稍后将提供一个轻量有效的自动关联查询与存储机制
  4. 事物支持

Backlog

  1. Nuget 发布目标修改为 V3 版本
  2. 详细测试及优化周边搜索方法,GetNearBy() 方法增加查询条件 filter
  3. Azure DevOps CI/CD 集成
  4. MongoDB / Cosmos DB 功能单元测试达到 100% 覆盖率
  5. 替换 StackExchange.Redis 引用
  6. 类方法接口化

1.1.0

  1. 作为长期稳定版本
  2. 发布一个等效的 Java 版本类库
Hendry

About Hendry

不经历复杂的简单,只是一种苍白。

发表评论

电子邮件地址不会被公开。