乐于分享
好东西不私藏

Marten:.NET 的文档数据库ORM

Marten:.NET 的文档数据库ORM
最近半年,一个叫Marten的 .NET 项目在 GitHub 上火了。它用了一个巧妙的思路:把 PostgreSQL 当成文档数据库来用。

简单到不像 ORM

Marten 最大的优点就是简单。你不需要配置复杂的映射关系,一个普通的 C

类就能直接存:

public class User{    public Guid Id { get; set; }    public string Name { get; set; }}// 存数据只要两行代码session.Store(user);await session.SaveChangesAsync();
数据以 JSON 格式存在 PostgreSQL 里,既保留了 SQL 数据库的事务特性,又有了 NoSQL 的灵活性。

5分钟上手

# 1. 安装dotnet add package Marten# 2. 配置(Program.cs)builder.Services.AddMarten(options =>{    options.Connection("你的PostgreSQL连接字符串");    options.AutoCreateSchemaObjects = AutoCreate.All; // 开发环境用});# 3. 使用app.MapGet("/users/{id}", async (Guid id, IQuerySession session) =>{    return await session.LoadAsync<User>(id);});
启动应用,Marten 会自动创建表。你的对象会以 JSONB 格式存在 data字段里。

为什么选 Marten?

开发快:不用写迁移脚本,改完类直接跑
查询方便:支持 LINQ,写起来和 EF Core 差不多
事件溯源:内置事件存储,适合需要审计的系统
性能不错:直接利用 PostgreSQL 的 JSONB 索引

需要注意的

必须用 PostgreSQL(这是它的设计基础)
复杂关联查询还是写 SQL 更直接
适合读多写少的场景

总结

如果你在用 PostgreSQL,又想要 NoSQL 的开发体验,Marten 值得一试。它让 .NET 的数据访问多了一个实用选择。

相关学习资料