快速入门ORMX - 开发日志,ORMX入门, 快速开始, 安装配置, CRUD操作, 示例代码 - 快速入门ORMX,学习安装配置、实体定义、数据库连接和基本的CRUD操作。

您当前正在浏览的是本站SEO版网页

请点击确认

马上提升浏览体验

快速入门ORMX

编程 数据库 阅读:0
2/8/2026 9:09:01 PM

快速入门ORMX,学习安装配置、实体定义、数据库连接和基本的CRUD操作。 关键字:ORMX入门, 快速开始, 安装配置, CRUD操作, 示例代码

第二章:快速开始

2.1 安装 ORMX

2.1.1 通过 NuGet 安装

使用 .NET CLI 安装:

dotnet add package JCode.ORMX

或者使用 NuGet 包管理器控制台:

Install-Package JCode.ORMX

2.1.2 添加命名空间引用

在代码中引用必要的命名空间:

using JCode.ORMX.Abstractions;
using JCode.ORMX.Attributes;
using JCode.ORMX.DbProvider;
using JCode.ORMX.Core;
using Microsoft.Data.Sqlite;

2.2 第一个示例:Hello World

让我们从一个简单的示例开始,体验 ORMX 的基本用法。

2.2.1 定义实体类

首先,定义一个简单的用户实体类:

using JCode.ORMX.Attributes;

[Table(Name = "Users")]
public class User
{
    [Column(IsPrimaryKey = true, IsAutoIncrement = true)]
    public int Id { get; set; }
    
    public string Name { get; set; }
    
    public string Email { get; set; }
    
    public int Age { get; set; }
}

代码说明:

  • [Table(Name = "Users")]:指定数据库表名为 "Users"
  • [Column(IsPrimaryKey = true, IsAutoIncrement = true)]:标记 Id 为主键并自动增长
  • 其他属性会自动映射到同名的数据库列

关于实体映射的详细说明,请查阅实体映射

2.2.2 创建数据库连接

ORMX 提供了两种连接管理方式,推荐使用方式一(传入连接字符串)。

方式一:传入连接字符串(推荐)

using JCode.ORMX.DataProviders.SQLite;

// 创建数据库提供程序(内部自动创建连接)
using var provider = new SqliteDatabaseProvider("Data Source=:memory:");

// 获取表管理器(无需额外参数)
var tableManager = provider.GetTableManager();

方式二:传入已创建的连接实例

using JCode.ORMX.DataProviders.SQLite;
using Microsoft.Data.Sqlite;

// 创建数据库连接
using var connection = new SqliteConnection("Data Source=:memory:");
connection.Open();

// 创建数据库提供程序
using var provider = new SqliteDatabaseProvider(connection);

// 获取表管理器
var tableManager = provider.GetTableManager();

支持的数据库类型:

  • SQLite:new SqliteDatabaseProvider(connectionString)new SqliteDatabaseProvider(connection)
  • MySQL:new MySqlDatabaseProvider(connectionString)new MySqlDatabaseProvider(connection)
  • PostgreSQL:new PgSqlDatabaseProvider(connectionString)new PgSqlDatabaseProvider(connection)
  • SQL Server:new SqlServerDatabaseProvider(connectionString)new SqlServerDatabaseProvider(connection)
  • Rides:new RidesDatabaseProvider(connectionString)new RidesDatabaseProvider(connection)

关于数据库连接的详细配置,请参考数据库连接

2.2.3 获取表对象

获取表对象,用于执行数据库操作:

var userTable = tableManager.Table<User>();

注意: ITable<T> 接口没有实现 IDisposable,不需要使用 using 语句。资源由 SqliteDatabaseProvider 统一管理。

2.2.4 完整的 Hello World 示例

下面是一个完整的示例,演示如何创建、查询、更新和删除用户:

using System;
using JCode.ORMX.Attributes;
using JCode.ORMX.DataProviders.SQLite;

// 定义实体类
[Table(Name = "Users")]
public class User
{
    [Column(IsPrimaryKey = true, IsAutoIncrement = true)]
    public int Id { get; set; }
    
    public string Name { get; set; }
    
    public string Email { get; set; }
    
    public int Age { get; set; }
}

class Program
{
    static void Main(string[] args)
    {
        // 创建数据库提供程序(推荐方式:传入连接字符串)
        using var provider = new SqliteDatabaseProvider("Data Source=:memory:");
        var tableManager = provider.GetTableManager();

        // 获取表对象
        var userTable = tableManager.Table<User>();

        // 1. 创建用户
        Console.WriteLine("=== 创建用户 ===");
        var newUser = new User
        {
            Name = "张三",
            Email = "zhangsan@example.com",
            Age = 25
        };
        var insertedUser = userTable.Insert(newUser);
        Console.WriteLine(<div class="latex">$"用户创建成功,ID: {insertedUser.Id}");
        
        // 2. 查询用户
        Console.WriteLine("\n=== 查询用户 ===");
        var foundUser = userTable.Where(u => u.Id == insertedUser.Id).FirstOrDefault();
        Console.WriteLine($</div>"找到用户: {foundUser.Name}, 邮箱: {foundUser.Email}, 年龄: {foundUser.Age}");
        
        // 3. 更新用户
        Console.WriteLine("\n=== 更新用户 ===");
        foundUser.Age = 26;
        userTable.Update(foundUser);
        var updatedUser = userTable.Where(u => u.Id == insertedUser.Id).FirstOrDefault();
        Console.WriteLine(<div class="latex">$"用户年龄已更新为: {updatedUser.Age}");
        
        // 4. 查询所有用户
        Console.WriteLine("\n=== 查询所有用户 ===");
        var allUsers = userTable.GetList();
        Console.WriteLine($</div>"总共有 {allUsers.Count} 个用户");
        
        // 5. 删除用户
        Console.WriteLine("\n=== 删除用户 ===");
        userTable.Where(u => u.Id == insertedUser.Id).Delete();
        var deletedUser = userTable.Where(u => u.Id == insertedUser.Id).FirstOrDefault();
        Console.WriteLine(deletedUser == null ? "用户已删除" : "删除失败");
    }
}

运行结果:

=== 创建用户 ===
用户创建成功,ID: 1

=== 查询用户 ===
找到用户: 张三, 邮箱: zhangsan@example.com, 年龄: 25

=== 更新用户 ===
用户年龄已更新为: 26

=== 查询所有用户 ===
总共有 1 个用户

=== 删除用户 ===
用户已删除

2.3 常见连接字符串

2.3.1 SQLite

// 内存数据库(测试用)
"Data Source=:memory:"

// 文件数据库
"Data Source=mydatabase.db"

// 带密码的数据库
"Data Source=mydatabase.db;Password=mypassword;"

2.3.2 MySQL

// 基本连接
"Server=localhost;Database=mydb;Uid=root;Pwd=password;"

// 指定端口
"Server=localhost;Port=3306;Database=mydb;Uid=root;Pwd=password;"

// 带字符集
"Server=localhost;Database=mydb;Uid=root;Pwd=password;Charset=utf8mb4;"

2.3.3 PostgreSQL

// 基本连接
"Host=localhost;Database=mydb;Username=postgres;Password=password;"

// 指定端口
"Host=localhost;Port=5432;Database=mydb;Username=postgres;Password=password;"

// 带超时设置
"Host=localhost;Database=mydb;Username=postgres;Password=password;Timeout=30;"

2.3.4 SQL Server

// 基本连接
"Server=localhost;Database=mydb;User Id=sa;Password=password;"

// 使用 Windows 身份验证
"Server=localhost;Database=mydb;Integrated Security=True;"

// 指定端口
"Server=localhost,1433;Database=mydb;User Id=sa;Password=password;"

关于数据库连接的详细配置,请参考数据库连接

2.4 资源管理最佳实践

2.4.1 使用 using 语句

始终使用 using 语句来管理数据库提供程序,确保资源正确释放:

using JCode.ORMX.DataProviders.SQLite;

// 推荐:使用 using 语句(传入连接字符串)
using (var provider = new SqliteDatabaseProvider("Data Source=test.db"))
{
    var tableManager = provider.GetTableManager();
    var userTable = tableManager.Table<User>();
    // 数据库操作
    // provider 释放时会自动释放内部的连接和 SQL 执行器
}

// 不推荐:手动管理资源
var provider = new SqliteDatabaseProvider("Data Source=test.db");
var tableManager = provider.GetTableManager();
var userTable = tableManager.Table<User>();
// 数据库操作
provider.Dispose(); // 容易忘记调用

说明:

  • SqliteDatabaseProvider 实现了 IDisposable 接口
  • 使用 using 语句可以自动释放资源
  • 内部会自动释放数据库连接和 SQL 执行器
  • ITable<T> 接口没有实现 IDisposable,不需要使用 using 语句

2.4.2 连接字符串管理

将连接字符串放在配置文件中,而不是硬编码:

// appsettings.json
{
  "ConnectionStrings": {
    "DefaultConnection": "Data Source=mydatabase.db"
  }
}
using JCode.ORMX.DataProviders.SQLite;

// 读取配置
var configuration = new ConfigurationBuilder()
    .SetBasePath(Directory.GetCurrentDirectory())
    .AddJsonFile("appsettings.json")
    .Build();

var connectionString = configuration.GetConnectionString("DefaultConnection");

// 创建数据库提供程序
using var provider = new SqliteDatabaseProvider(connectionString);
var tableManager = provider.GetTableManager();
var userTable = tableManager.Table<User>();

总结

本章介绍了如何快速开始使用 ORMX 框架。通过 NuGet 安装 ORMX 后,只需定义实体类、创建数据库连接、获取表对象,即可进行基本的 CRUD 操作。ORMX 提供了两种连接管理方式,推荐使用传入连接字符串的方式,由框架自动管理连接。使用 using 语句可以确保资源正确释放,连接字符串应该存储在配置文件中而非硬编码。通过完整的 Hello World 示例,我们演示了创建、查询、更新和删除用户的完整流程,展示了 ORMX 简洁直观的 API 设计。

扩展思考

在实际项目中,如何组织和管理多个实体类和数据库连接?对于大型应用,是否需要引入仓储模式或工作单元模式来进一步抽象数据访问层?ORMX 的简洁设计如何与依赖注入容器集成,以实现更好的可测试性和可维护性?这些问题值得在深入学习后进一步探索。