「Fluent NHibernate」の版間の差分

提供: MonoBook
ナビゲーションに移動 検索に移動
imported>Administrator
14行目: 14行目:
  
 
== 使い方 ==
 
== 使い方 ==
 +
=== データベース接続設定 ===
 +
Fluent NHibernateには各種データベースの接続用ドライバーも含まれているので、大半のデータベースは接続設定だけすれば動く。
 +
 +
==== MySQL ====
 +
[[MySQL]]の接続設定の例を示す。
 +
 +
なお、この例ではホスト名やユーザー名、パスワードなどのMySQL接続設定は[[アプリケーション構成ファイル]]のConnectionStringsに記載されたものを使う。
 +
<source lang="csharp">
 +
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();
 +
    }
 +
}
 +
</source>
 +
 +
あまりお勧めできる方法ではないが、[[アプリケーション構成ファイル]]ではなく、[[MySQL]]の接続設定を直接[[ソースコード]]に埋め込む方法もある。
 +
独自の設定ファイルを用いる場合にはこの方法を使うのもありかもしれない。
 +
<source lang="csharp">
 +
var dbConfig = MySQLConfiguration
 +
    .Standard
 +
    .ConnectionString(cs => cs
 +
        .Server("127.0.0.1")
 +
        .Username("user_name")
 +
        .Password("pasword")
 +
        .Database("database_name")
 +
    )
 +
)
 +
</source>
 +
 +
==== SQLite ====
 +
[[SQLite]]の接続設定。
 +
Fluent NHibernateの公式サイトにあるサンプルはほぼSQLiteを使用しているので、公式サイトを見て回った方が早いかもしれない。
 +
<source lang="csharp">
 +
var dbConfig = SQLiteConfiguration
 +
    .Standard
 +
    .UsingFile("firstProject.db") // SQLiteファイルのパスを指定する。
 +
</source>
 +
 
{{stub}}
 
{{stub}}
  

2012年7月8日 (日) 03:48時点における版

Fluent NHibernate(ふるーえんと・えぬはいばねーと)とは、.NET Framework向けのORMのひとつであるNHibernateラッパーライブラリである。

概要

NHibernateではデータベースの接続設定やマッピングを記述するのにXMLを用いる。一方、Fluent NHibernateではXMLの代わりにC#によるプログラムでそれらを記述する。

XMLではなくC#で記述することで、実行時にXMLを動的に解析するのに比べ、実行前にコンパイラによる最低限の記述ミスのチェックを行え、より安全性が高まるという利点がある。

また、Visual StudioMonoDevelopなどの統合開発環境を使用することでインテリセンスなどの入力補完なども使えるため、シンタックスエラーなどの些細な記述ミスによるバグを抑制することができる。

さらにFluent NHibernateでは、Rubyなどでよく使われるActive Recordのようにマッピングクラスに基づき、それらに対応するデータベース上のテーブルの自動生成するオートマッピング機能を備えている。Fluent NHibernateのオートマッピング機能では、マッピングクラスを個別に明示し生成することも、.NET Frameworkアセンブリを指定することで、そのアセンブリの中で使われているマッピングクラスを自動認識させ、そこから一気に自動生成を行うこともできるようになっている。

インストール

Visual Studioを用いている場合はNuGetを使うことで、Fluent NHibernateおよびNHibernateなどの依存するその他のライブラリも一括でインストールできるので便利である。[1]

使い方

データベース接続設定

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

MySQL

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

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

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


関連項目

参考文献

外部リンク