Fluent NHibernate/データベース接続設定

提供: MonoBook
移動: 案内検索

Fluent NHibernateデータベース接続設定には、FluentNHibernate.Cfg名前空間、およびFluentNHibernate.Cfg.Db名前空間にあるクラス群を用いる。

Fluent NHibernateの主要機能のひとつであるエンティティおよびマッピングからのスキーマ自動生成(テーブルなどの自動生成)に関する設定もここで行う。

ドライバー[編集]

Fluent NHibernateには各種データベースの接続用ドライバーも含まれているので、大半のデータベースは接続設定だけすれば動く。

接続設定にはIPersistenceConfigurerインターフェイスを実装したクラスを用いる。 デフォルトではFluentNHibernate.Cfg.Db名前空間に以下のクラスが用意されている。

クラス RDBMS
DB2Configuration DB2
FirebirdConfiguration Firebird
IfxDRDAConfiguration
IfxOdbcConfiguration ODBC
IfxSQLIConfiguration
IngresConfiguration Ingres
JetDriverConfiguration Jetデータベースエンジン(昔のAccessなど,Excelでも使える)
MsSqlCeConfiguration SQL Server CE
MsSqlConfiguration SQL Server
MySQLConfiguration MySQL
OracleClientConfiguration Oracle?他との違いは知らない。
OracleConfiguration Oracle?他との違いは知らない。
OracleDataClientConfiguration Oracle?他との違いは知らない。
PostgreSQLConfiguration PostgreSQL
SQLAnywhereConfiguration
SQLiteConfiguration SQLite

MySQL[編集]

Fluent NHibernateによるMySQLの接続設定の例を示す。

なお、この例ではホスト名やユーザー名、パスワードなどのMySQL接続設定はアプリケーション構成ファイルのConnectionStringsに記載されたものを使う。

using FluentNHibernate;
using FluentNHibernate.Cfg;
using FluentNHibernate.Cfg.Db;
using NHibernate;
using NHibernate.Tool.hbm2ddl;
 
public class SampleApp
{
    public void Main(string[] args)
    {
        // MySQLの場合
        var dbConfig = MySQLConfiguration
            .Standard
            .ConnectionString(cs => cs.FromConnectionStringWithKey("db"))
            ;
        // 多くのサンプルでは↑と↓をメソッドチェーンで合体させて記述してあることが多い。
        // そのような書き方は個人的にはあまり好きではない。
        var fnConfig = Fluently.Configure()
            .Database(dbConfig)
            ;
        var factory = fnConfig.BuildSessionFactory();
    }
}

あまりお勧めできる方法ではないが、アプリケーション構成ファイルではなく、MySQLの接続設定を直接ソースコードに埋め込む方法もある。 独自の設定ファイルを用いる場合にはこの方法を使うのもありかもしれない。

var dbConfig = MySQLConfiguration
    .Standard
    .ConnectionString(cs => cs
        .Server("127.0.0.1")
        .Username("user_name")
        .Password("pasword")
        .Database("database_name")
    )
)

SQLite[編集]

Fluent NHibernateによるSQLiteの接続設定の例を示す。 Fluent NHibernateの公式サイトにあるサンプルはほぼSQLiteを使用しているので、公式サイトを見て回った方が早いかもしれない。

var dbConfig = SQLiteConfiguration
    .Standard
    .UsingFile("firstProject.db") // SQLiteファイルのパスを指定する。

関連項目[編集]

参考文献[編集]


外部リンク[編集]