JCode.ORMX
1.0.3
dotnet add package JCode.ORMX --version 1.0.3
NuGet\Install-Package JCode.ORMX -Version 1.0.3
<PackageReference Include="JCode.ORMX" Version="1.0.3" />
<PackageVersion Include="JCode.ORMX" Version="1.0.3" />
<PackageReference Include="JCode.ORMX" />
paket add JCode.ORMX --version 1.0.3
#r "nuget: JCode.ORMX, 1.0.3"
#:package JCode.ORMX@1.0.3
#addin nuget:?package=JCode.ORMX&version=1.0.3
#tool nuget:?package=JCode.ORMX&version=1.0.3
JCode.ORMX
JCode.ORMX 是一个轻量级、高性能的 .NET ORM 框架,支持多种数据库,包括关系型数据库(SQL Server、MySQL、PostgreSQL、SQLite)和 NoSQL 数据库(MongoDB)。它提供了简洁的 API,使数据库操作变得简单而强大。
功能特性
- 多数据库支持:支持关系型数据库(SQL Server、MySQL、PostgreSQL、SQLite)和 NoSQL 数据库(MongoDB)
- 分布式数据库支持:内置分片策略,支持分布式数据库操作
- 缓存支持:内置分布式缓存机制,提高查询性能
- 链式 API:提供流畅的链式调用接口,代码更易读
- 表达式树支持:使用 LINQ 表达式树进行类型安全的查询
- 事务支持:支持数据库事务操作
- 聚合函数:支持 COUNT、SUM、AVG、MAX、MIN 等聚合函数
- 分组查询:支持 GROUP BY 和 HAVING 子句
- 连接查询:支持 INNER JOIN、LEFT JOIN、RIGHT JOIN、FULL JOIN
- 窗口函数:支持 ROW_NUMBER、RANK、DENSE_RANK、NTILE、LAG、LEAD 等窗口函数
- 分页查询:内置分页支持
- 调试功能:支持 SQL 调试,方便查看生成的 SQL 语句
安装
NuGet 包
Install-Package JCode.ORMX
数据库提供程序包
根据您使用的数据库,安装相应的提供程序包:
# SQL Server
Install-Package JCode.ORMX.DbProvider.SQLServer
# MySQL
Install-Package JCode.ORMX.DbProvider.MySQL
# PostgreSQL
Install-Package JCode.ORMX.DbProvider.PostgreSQL
# SQLite
Install-Package JCode.ORMX.DbProvider.SQLite
# MongoDB
Install-Package JCode.ORMX.DbProvider.MongoDB
快速开始
1. 定义实体类
[Table("Users")]
public class User
{
[Column(IsPrimaryKey = true, IsIdentity = true)]
public int Id { get; set; }
[Column]
public string Name { get; set; }
[Column]
public string Email { get; set; }
[Column]
public DateTime CreatedAt { get; set; }
}
2. 初始化数据库提供程序
// SQL Server
var provider = new SQLServerProvider("Server=localhost;Database=MyDb;User Id=sa;Password=your_password;");
// MySQL
var provider = new MySQLProvider("Server=localhost;Database=MyDb;User=root;Password=your_password;");
// PostgreSQL
var provider = new PostgreSQLProvider("Host=localhost;Database=MyDb;Username=postgres;Password=your_password;");
// SQLite
var provider = new SQLiteProvider("Data Source=mydb.db;");
// MongoDB
var provider = new MongoDbProvider("mongodb://localhost:27017/MyDb");
3. 创建表
var tableManager = provider.GetTableManager();
tableManager.Create(typeof(User));
4. 基本操作
var table = tableManager.Table<User>();
// 插入
var user = new User { Name = "John", Email = "john@example.com", CreatedAt = DateTime.Now };
table.Insert(user);
// 查询
var users = table.Find()
.Where(u => u.Name == "John")
.OrderBy(u => u.Id)
.Limit(10)
.GetList();
// 更新
table.Update()
.Set("Email", "newemail@example.com")
.Where(u => u.Id == 1)
.Execute();
// 删除
table.Delete()
.Where(u => u.Id == 1)
.Execute();
高级功能
分布式数据库
// 创建分布式数据库提供程序
var distributedProvider = new DistributedDbProvider();
// 添加分片
distributedProvider.AddProvider("shard1", provider1);
distributedProvider.AddProvider("shard2", provider2);
// 配置分片策略
distributedProvider.SetShardingStrategy(new UserIdShardingStrategy());
// 使用分布式表
var table = distributedProvider.GetTableManager().Table<User>();
var users = table.Find().GetList();
聚合查询
var result = table.Aggregate()
.GroupBy("Department")
.Count("EmployeeCount", "Id")
.Avg("AvgSalary", "Salary")
.GetList();
连接查询
var result = table.Find()
.InnerJoin<Order>((u, o) => u.Id == o.UserId)
.Where(u => u.Name == "John")
.GetList();
窗口函数
var result = table.Find()
.WindowFunction()
.RowNumber("RowNum", u => u.Salary)
.OrderByDesc(u => u.RowNum)
.GetList();
性能优化
缓存
// 创建带缓存的提供程序
var cachedProvider = new CachedDistributedDbProvider(
distributedProvider,
new MemoryDistributedCache(TimeSpan.FromMinutes(5))
);
批量操作
// 批量插入
var users = new List<User> { /* ... */ };
table.InsertAll(users);
// 批量更新
table.UpdateAll(users);
// 批量删除
table.DeleteAll(users);
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
| .NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- log4net (>= 3.2.0)
- Microsoft.CSharp (>= 4.7.0)
- OpenTelemetry (>= 1.15.0)
- OpenTelemetry.Api (>= 1.15.0)
- System.Text.Json (>= 10.0.2)
NuGet packages (7)
Showing the top 5 NuGet packages that depend on JCode.ORMX:
| Package | Downloads |
|---|---|
|
JCode.ORMX.DbProvider.MongoDB
MongoDB provider for ORMX - Object Relational Mapping Extended for .NET MongoDB 提供程序,用于 ORMX - .NET 的对象关系映射扩展 |
|
|
JCode.ORMX.DbProvider.MySQL
MySQL database provider for ORMX - Object Relational Mapping Extended for .NET. ORMX 的 MySQL 数据库提供程序 - .NET 对象关系映射扩展框架 |
|
|
JCode.ORMX.DbProvider.SQLServer
SQL Server database provider for ORMX - Object Relational Mapping Extended for .NET. ORMX 的 SQL Server 数据库提供程序 - .NET 对象关系映射扩展框架 |
|
|
JCode.ORMX.DbProvider.PostgreSQL
PostgreSQL database provider for ORMX - Object Relational Mapping Extended for .NET. ORMX 的 PostgreSQL 数据库提供程序 - .NET 对象关系映射扩展框架 |
|
|
JCode.ORMX.DbProvider.SQLite
SQLite database provider for ORMX - Object Relational Mapping Extended for .NET. ORMX 的 SQLite 数据库提供程序 - .NET 对象关系映射扩展框架 |
GitHub repositories
This package is not used by any popular GitHub repositories.