OceanBase
English日本語简体中文
ドキュメントホーム
製品
エコシステム
リリース

データベース

OceanBase CloudOceanBaseデータベース

データベース

OceanBase CloudOceanBaseデータベース
OceanBase CloudOceanBaseデータベース

OceanBaseデータベース

  • エコシステム統合の概要
  • ORMフレームワーク
    • Java
      • SpringBootサンプルプログラム
      • SpringBatchサンプルプログラム
      • Spring JDBCサンプルプログラム
      • SpringDataJPAサンプルプログラム
      • Hibernateサンプルプログラム
      • MyBatisサンプルプログラム
    • Python
      • SQLAlchemyによるOceanBaseデータベース接続サンプルプログラム
      • peeweeによるOceanBaseデータベース接続サンプルプログラム
      • Tortoise ORM による OceanBase データベース接続サンプルプログラム
    • Go
      • GORMサンプルプログラム
    • Rust
      • SeaORM による OceanBase データベース接続サンプルプログラム
    • Ruby
      • ActiveRecordによるOceanBaseデータベース接続サンプルプログラム
      • Sequel で OceanBase データベースに接続するサンプルプログラム
      • Ruby on RailsによるOceanBaseデータベース接続サンプルプログラム
    • Node.js
      • SequelizeでOceanBaseデータベースに接続する
      • TypeORMを使用してOceanBaseデータベースに接続する
      • Prismaを使用してOceanBaseデータベースに接続する
      • Drizzle ORMを使用してOceanBaseデータベースに接続する
    • C#
      • Dapperを使用してOceanBaseデータベースに接続する
      • SqlSugarを使用してOceanBaseデータベースに接続する
      • FreeSQLを使用してOceanBaseデータベースに接続する
    • PHP
      • Yii 2.0 ORMサンプルプログラム
      • Laravel Eloquent ORMサンプルプログラム
  • データベースのバージョン管理
    • Liquibaseを使用したOceanBaseデータベースのバージョンの管理
    • Flywayを使用してOceanBaseデータベースを統合し、バージョン管理を実現する
  • データ統合
    • dbtを使用したOceanBaseデータの分析
    • Flink DirectLoadを使用したOceanBaseのダイレクトインポート
    • SeaTunnelを使用したOceanBaseデータの読み取りと同期
    • Maxwellを使用したOceanBaseデータの読み取り
    • Debeziumを使用してOceanBaseに接続し、データを取得する
    • Spark Catalogを使用してOceanBaseデータベースに接続する
    • Apache NiFiを使用してOceanBaseデータベースと統合する
  • SQL開発
    • WebLogicを使用してOceanBaseデータベースに接続する
    • DBeaverを使用してOceanBaseデータベースに接続する
    • Navicatを使用してOceanBaseデータベースに接続する
    • DataGripでOceanBaseデータベースに接続する
    • TablePlusでOceanBaseデータベースに接続する
    • DMSを使用したOceanBaseデータベースの管理
  • 編成とスケジューリング
    • AirflowとOceanBaseデータベースの連携
    • PowerJobとOceanBaseデータベースの連携
    • DolphinSchedulerにOceanBaseデータソースを設定する
    • LinkisとOceanBaseデータベースの統合
  • 可視化ツール
    • SupersetとOceanBaseを使用したデータ分析
    • Power BIでOceanBaseに接続してデータを取得する
    • Quick BIでOceanBaseに接続してデータを取得する
    • Bytebaseを使用したOceanBaseインスタンスの管理
  • データベース管理
    • NineDataを使用したOceanBaseデータソースの管理
    • Bytebaseを使用したOceanBaseインスタンスの管理
  • AI
    • OpenAI
    • Qwen
    • OceanBaseデータベースとLangChainの統合
    • OceanBaseデータベースのベクトル検索機能とLlamaIndexの連携
    • OceanBaseデータベースのベクトル検索機能とDifyの連携
    • OceanBaseデータベースとn8nの連携
    • OceanBase MCP ServerとTraeの連携
    • OceanBaseデータベースとSpring AI Alibabaの連携
    • OceanBase MCP ServerとClineの連携
    • OceanBase MCP ServerとCursorの連携
    • OceanBase MCP ServerとContinueの連携
    • Google GenAI Toolboxを使用して独自のOceanBase MCP Serverを構築する
    • OceanBaseデータベースとCamelAIの連携
    • OceanBase VectorとFirecrawlの連携
    • OceanBase VectorとHugging Faceの連携
    • OceanBase VectorとOllamaの連携
    • OceanBaseデータベースとGoogle Geminiの連携
    • OceanBase VectorとCloudflare Workers AIの連携
    • OceanBase VectorとJina AIの連携
    • OceanBase MCP ServerとAugment Codeの連携
    • OceanBase MCP ServerとClaude Codeの連携
    • OceanBase MCP ServerとKiroの連携

PDF をダウンロード

ドキュメントフィードバック
  1. ドキュメントセンター
  2. OceanBaseデータベース
  3. master

FreeSQLを使用してOceanBaseデータベースに接続する

最終更新:2026-10-10 03:12:37

前提条件
手順
ステップ1:新しいプロジェクトを作成する
ステップ2:必要なNuGetパッケージをインストールする
ステップ3:データベース接続を設定する
ステップ4:データモデルを作成する
ステップ5:データアクセス層を実装する
ステップ6:メインプログラムの実装
プログラムの実行
関連ドキュメント

機能の適用範囲

FreeSQLはOceanBaseデータベースのMySQLモードに適用されます。

FreeSQLは、多様なデータベースをサポートする強力で柔軟な.NET ORMフレームワークです。本記事では、FreeSQLを使用してOceanBaseデータベースのMySQLモードに接続する方法について説明します。

前提条件

  • .NET SDK 6.0以降がインストール済みであること。
  • Visual StudioまたはVS Codeがインストール済みであること。
  • OceanBaseデータベースがデプロイ済みで、MySQLモードのテナントが作成されていること。

手順

  1. 新しいプロジェクトを作成する
  2. 必要なNuGetパッケージをインストールする
  3. データベース接続を設定する
  4. データモデルを作成する
  5. データアクセス層を実装する
  6. サンプルプログラムを実行する

ステップ1:新しいプロジェクトを作成する

  1. ターミナルを開き、以下のコマンドを実行して新しいコンソールアプリケーションを作成します:

    dotnet new console -n FreeSQLOceanBaseDemo
    cd FreeSQLOceanBaseDemo
    

ステップ2:必要なNuGetパッケージをインストールする

  1. FreeSQLと必要な依存パッケージをインストールします:

    # ORMコアパッケージ
    dotnet add package FreeSQL
    dotnet add package FreeSql.Provider.MySqlConnector
    dotnet add package FreeSql.DbContext
    
    # 設定関連
    dotnet add package Microsoft.Extensions.Configuration --version 8.0.0
    dotnet add package Microsoft.Extensions.Configuration.FileExtensions --version 8.0.0
    dotnet add package Microsoft.Extensions.Configuration.Json --version 8.0.0
    
    # パスワードの暗号化
    dotnet add package BCrypt.Net-Next --version 4.0.3
    

ステップ3:データベース接続を設定する

  1. appsettings.json ファイルを作成し、データベース接続文字列を追加します。

    {
      "ConnectionStrings": {
        "DefaultConnection": "Server=your_server;Port=2881;Database=your_database;Uid=your_username;Pwd=your_password;"
      }
    }
    
  2. プロジェクトファイル(.csproj)を修正し、appsettings.json が出力ディレクトリにコピーされていることを確認します。

    <ItemGroup>
      <None Update="appsettings.json">
        <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
      </None>
    </ItemGroup>
    

ステップ4:データモデルを作成する

  1. Models フォルダを作成し、User.cs クラスを追加します。

    using FreeSql.DataAnnotations;
    using System;
    
    namespace FreeSQLOceanBaseDemo.Models;
    
    [Table(Name = "users")]
    public class User
    {
        [Column(IsPrimary = true, IsIdentity = true)]
        public int Id { get; set; }
    
        [Column(StringLength = 50, IsNullable = false)]
        public string Username { get; set; }
    
        [Column(StringLength = 100, IsNullable = false)]
        public string Email { get; set; }
    
        [Column(StringLength = 255, IsNullable = false)]
        public string PasswordHash { get; set; }
    
        [Column(ServerTime = DateTimeKind.Utc, CanUpdate = false)]
        public DateTime CreatedAt { get; set; }
    
        [Column(ServerTime = DateTimeKind.Utc)]
        public DateTime? UpdatedAt { get; set; }
    }
    

ステップ5:データアクセス層を実装する

  1. Data フォルダを作成し、AppDbContext.cs クラスを追加します。

    using FreeSql;
    using System.Data;
    using FreeSql.DatabaseModel;
    using FreeSQLOceanBaseDemo.Models;
    using Microsoft.Extensions.Configuration;
    using System;
    using System.IO;
    namespace FreeSQLOceanBaseDemo.Data;
    public class AppDbContext : DbContext
    {
    public DbSet Users { get; set; }
    private readonly IConfiguration _configuration;
    private static IFreeSql _fsql;
    public AppDbContext(IConfiguration configuration)
    {
    _configuration = configuration;
    
    if (_fsql == null)
    {
        _fsql = new FreeSqlBuilder()
            .UseConnectionString(DataType.MySql, _configuration.GetConnectionString("DefaultConnection"))
            .UseMonitorCommand(cmd =>
            {
                Console.WriteLine($"SQL: {cmd.CommandText}");
                if (cmd.Parameters != null)
                {
                    foreach (IDataParameter param in cmd.Parameters)
                    {
                        Console.WriteLine($"  -> {param.ParameterName}: {param.Value}");
                    }
                }
            })
            .UseAutoSyncStructure(true)
            .Build();
    
        _fsql.Aop.CurdBefore += (s, e) =>
        {
            Console.WriteLine($"実行前: {e.Sql}");
        };
    
        _fsql.Aop.CurdAfter += (s, e) =>
        {
            Console.WriteLine($"実行後、影響行数: {e.ElapsedMilliseconds}ms");
        };
    }
    }
    public IFreeSql GetFreeSql()
    {
    return _fsql;
    }
    }
    
  2. Repositories フォルダを作成し、UserRepository.cs クラスを追加します:

    using FreeSql;
    using FreeSQLOceanBaseDemo.Models;
    using System;
    using System.Collections.Generic;
    using System.Threading.Tasks;
    
    namespace FreeSQLOceanBaseDemo.Repositories;
    
    public class UserRepository
    {
        private readonly IFreeSql _fsql;
    
        public UserRepository(IFreeSql fsql)
        {
            _fsql = fsql;
        }
    
        public async Task<List<User>> GetAllUsersAsync()
        {
            return await _fsql.Select<User>().ToListAsync();
        }
    
        public async Task<User> GetUserByIdAsync(int id)
        {
            return await _fsql.Select<User>().Where(u => u.Id == id).FirstAsync();
        }
    
        public async Task<User> CreateUserAsync(User user)
        {
            user.CreatedAt = DateTime.UtcNow;
            await _fsql.Insert(user).ExecuteAffrowsAsync();
            return user;
        }
    
        public async Task<bool> UpdateUserAsync(User user)
        {
            user.UpdatedAt = DateTime.UtcNow;
            var result = await _fsql.Update<User>()
                .SetSource(user)
                .ExecuteAffrowsAsync();
    
            return result > 0;
        }
    
        public async Task<bool> DeleteUserAsync(int id)
        {
            var result = await _fsql.Delete<User>()
                .Where(u => u.Id == id)
                .ExecuteAffrowsAsync();
    
            return result > 0;
        }
    }
    

ステップ6:メインプログラムの実装

Program.cs ファイルを修正します:

using FreeSQLOceanBaseDemo.Data;
using FreeSQLOceanBaseDemo.Models;
using FreeSQLOceanBaseDemo.Repositories;
using Microsoft.Extensions.Configuration;
using System;
using System.IO;
using System.Threading.Tasks;

var configuration = new ConfigurationBuilder()
    .SetBasePath(Directory.GetCurrentDirectory())
    .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
    .Build();

var dbContext = new AppDbContext(configuration);
var userRepository = new UserRepository(dbContext.GetFreeSql());

var newUser = new User
{
    Username = "testuser",
    Email = "test@example.com",
    PasswordHash = BCrypt.Net.BCrypt.HashPassword("your_secure_password")
};

try
{
    var createdUser = await userRepository.CreateUserAsync(newUser);
    Console.WriteLine($"User created with ID: {createdUser.Id}");

    var user = await userRepository.GetUserByIdAsync(createdUser.Id);
    if (user != null)
    {
        Console.WriteLine($"Retrieved user: {user.Username}, Email: {user.Email}");
        
        user.Username = "updated_username";
        var updated = await userRepository.UpdateUserAsync(user);
        Console.WriteLine($"User updated: {updated}");
        
        var users = await userRepository.GetAllUsersAsync();
        Console.WriteLine($"Total users: {users.Count}");
        
        var deleted = await userRepository.DeleteUserAsync(user.Id);
        Console.WriteLine($"User deleted: {deleted}");
    }
}
catch (Exception ex)
{
    Console.WriteLine($"An error occurred: {ex.Message}");
    Console.WriteLine(ex.StackTrace);
}

プログラムの実行

  1. appsettings.json 内のデータベース接続文字列が更新されていることを確認してください。

  2. ターミナルで実行します:

    dotnet run
    

関連ドキュメント

  • FreeSQL公式ドキュメント
  • .NETデータベースアクセスのベストプラクティス
  • OceanBase公式ドキュメント

前のトピック

SqlSugarを使用してOceanBaseデータベースに接続する
前へ

次のトピック

Yii 2.0 ORMサンプルプログラム
次へ
このページの内容
前提条件
手順
ステップ1:新しいプロジェクトを作成する
ステップ2:必要なNuGetパッケージをインストールする
ステップ3:データベース接続を設定する
ステップ4:データモデルを作成する
ステップ5:データアクセス層を実装する
ステップ6:メインプログラムの実装
プログラムの実行
関連ドキュメント