最近半年,一个叫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,又想要 NoSQL 的开发体验,Marten 值得一试。它让 .NET 的数据访问多了一个实用选择。