在现代 .NET 开发中,ORM(对象关系映射)已经成为简化数据库访问、提高开发效率的重要工具。FreeSql是一款开源、高性能的.NET ORM框架,支持多种数据库和灵活的开发模式,适用于从中小型项目到复杂企业级应用的数据访问层构建。本文将全面介绍FreeSql的核心特性、优势以及如何在实际项目中使用它。
什么是 FreeSql ?
FreeSql是一款功能强大、轻量级的.NET ORM组件,支持 .NET Core 2.1+、.NET Framework 4.0+ 和 Xamarin 等多种平台,且采用MIT开源协议,零依赖、易扩展。它旨在为开发者提供一致且高性能的数据访问体验,支持CodeFirst、DbFirst、丰富的表达式查询等功能。
FreeSql内置对多种数据库的支持,包括MySQL、PostgreSQL、SQL Server、Oracle、SQLite、Firebird等,还支持一些国产或特殊数据库系统(如达梦、人大金仓、ClickHouse、DuckDB等)。
FreeSql的核心特点
多数据库兼容性
FreeSql提供统一的API来访问不同的数据库类型,不同数据库之间切换时无需大幅改动代码。
数据迁移与代码优先
- CodeFirst模式:通过实体类定义数据库模型并自动同步数据库结构,无需手写SQL迁移脚本。
- DbFirst模式:从已有数据库自动生成实体类,实现“数据库优先”开发流程。
导航属性与关系映射
FreeSql支持一对一、一对多、以及多对多等关联关系,并支持延迟加载和包含加载等高级特性,让实体关系处理更加直观。
高性能设计
FreeSql内部使用表达式树解析与优化执行,提高了查询性能;另外提供BulkCopy、批量操作等高性能工具,适合大数据量场景。
读写分离及高级功能
支持数据库读写分离、分表分库、多租户方案、全局过滤器、事务锁机制等企业级特性,使得它不仅仅是简单的ORM库。
FreeSql入门安装与基础使用
安装FreeSql
在项目中通过NuGet安装FreeSql及对应数据库提供程序:
dotnet add package FreeSql
dotnet add package FreeSql.Provider.Sqlite
也可以一次性安装所有支持的提供程序包。
配置与连接数据库
使用FreeSqlBuilder构建数据库连接对象(通常应作为单例维护):
static IFreeSql fsql = new FreeSql.FreeSqlBuilder()
.UseConnectionString(FreeSql.DataType.Sqlite, @"Data Source=test.db")
.UseAutoSyncStructure(true)
.Build();
该代码示例创建了一个SQLite的连接,并在启动时自动同步实体类到数据库表结构。
定义实体类与CRUD操作
定义实体类:
using FreeSql.DataAnnotations;
public class Blog
{
[Column(IsPrimary = true, IsIdentity = true)]
public int Id { get; set; }
public string Title { get; set; }
}
插入数据:
var blog = new Blog { Title = "Hello FreeSql" };
fsql.Insert(blog).ExecuteAffrows();
查询数据:
var list = fsql.Select<Blog>().Where(b => b.Title.Contains("FreeSql")).ToList();
更新与删除操作同样类似通过链式API完成,大大简化了操作代码。
进阶功能使用场景
多表联合查询
FreeSql提供强大的LINQ表达式支持,可以通过Join、Include等方法实现复杂查询。例如:
var result = fsql.Select<Blog>()
.Include(b => b.Comments)
.ToList();
事务与全局过滤
在需要保持数据一致性时,可以开启事务;同时可设置全局过滤器,例如软删除过滤条件:
fsql.GlobalFilter.Apply<UserDeletedFilter>("SoftDelete", it => it.IsDeleted == false);
这些进阶功能进一步提升了FreeSql在复杂项目中的实用性与灵活性。
适用场景与选择建议
FreeSql适合多种.NET项目场景:
- 需要支持多种数据库的通用数据访问层;
- 采用CodeFirst开发方式的快速原型;
- 需要读写分离、多租户、迁移等高级功能的企业应用;
- Xamarin、Blazor等跨平台项目使用。
若项目对ORM性能、可扩展性、跨平台支持要求高,FreeSql是一个值得考虑的选择。
总结
FreeSql是一个强大且灵活的.NET ORM框架,它集成了多种现代数据库访问功能,从简单的CRUD到复杂的分表、读写分离都能应对。凭借其简洁的API、高性能设计和开源生态,它正成为众多.NET开发者的数据访问首选。