01 - 5分钟快速开始:从安装到第一条数据

 jx   2026-03-04 08:37:59   10 人阅读  0 条评论

这篇文章只做一件事:让你在最短时间内把 TinyDb 跑起来,并完成一条完整的数据读写。

1. 安装

dotnet add package TinyDb

2. 定义实体

TinyDb 的 AOT 友好路径依赖 [Entity]。建议你所有需要持久化的类型都显式标注。

using TinyDb.Attributes;
using TinyDb.Bson;

[Entity("users")]
public partial class User
{
    [Id]
    public ObjectId Id { get; set; } = ObjectId.NewObjectId();

    [Index]
    public string Name { get; set; } = string.Empty;

    [Index(Unique = true)]
    public string Email { get; set; } = string.Empty;

    public int Age { get; set; }

    [BsonIgnore]
    public string? RuntimeToken { get; set; }

    public DateTime CreatedAt { get; set; } = DateTime.UtcNow;
}

3. 打开数据库并执行 CRUD

using TinyDb.Core;

const string dbPath = "quickstart.db";
using var db = new TinyDbEngine(dbPath);

var users = db.GetCollection<User>();

// Create
var user = new User
{
    Name = "张三",
    Email = "zhangsan@example.com",
    Age = 25
};
var insertedId = users.Insert(user);
Console.WriteLine($"插入成功: {insertedId}");

// Read
var loaded = users.FindById(insertedId);
Console.WriteLine($"查询结果: {loaded?.Name} / {loaded?.Email} / {loaded?.Age}");

// Update
if (loaded != null)
{
    loaded.Age = 26;
    users.Update(loaded);
}

// Delete
users.Delete(insertedId);
Console.WriteLine("删除完成");

4. 最小可运行 Demo(可直接放 Program.cs

using TinyDb.Attributes;
using TinyDb.Bson;
using TinyDb.Core;

[Entity("users")]
public partial class User
{
    [Id]
    public ObjectId Id { get; set; } = ObjectId.NewObjectId();
    public string Name { get; set; } = string.Empty;
    public string Email { get; set; } = string.Empty;
    public int Age { get; set; }
}

public class Program
{
    public static void Main()
    {
        const string dbPath = "quickstart.db";
        if (File.Exists(dbPath)) File.Delete(dbPath);

        using var db = new TinyDbEngine(dbPath);
        var users = db.GetCollection<User>();

        var u1 = new User { Name = "Alice", Email = "alice@demo.com", Age = 20 };
        var u2 = new User { Name = "Bob", Email = "bob@demo.com", Age = 30 };

        users.Insert(u1);
        users.Insert(u2);

        var adults = users.Find(x => x.Age >= 21).ToList();
        Console.WriteLine($"成年人数量: {adults.Count}");

        u1.Age = 21;
        users.Update(u1);

        Console.WriteLine($"总数: {users.Count()}");

        users.Delete(u2.Id);
        Console.WriteLine($"删除后总数: {users.Count()}");
    }
}

5. 你需要知道的三个关键点

  1. TinyDbEngine 是数据库生命周期入口,建议单例或作用域内复用。

  2. GetCollection<T>() 首次调用会触发集合注册、Schema 检查和自动索引扫描。

  3. BsonIgnore 字段不会持久化,常用于缓存字段、会话信息、临时状态。

6. 常见错误

  • 未标注 [Entity]:AOT 映射路径可能失败。

  • Update 时实体没有有效 Id:会抛出参数异常。

  • 直接把“运行时临时字段”当成持久化字段:读取后值为空,误以为数据丢失。

到这里你已经完成最小闭环。下一篇进入日常开发最常见的“CRUD + 批量处理”模式。

本文地址:http://www.jvxiang.com/Post?id=67
版权声明:本文为原创文章,版权归 jx 所有,欢迎分享本文,转载请保留出处!
NEXT:已经是最新一篇了
 相关文章  关键词:

 发表评论

{if $option['ZC_COMMENT_VERIFY_ENABLE']}

{/if}


表情

还没有留言,还不快点抢沙发?