メインメニューを開く

差分

Fluent NHibernate

2,173 バイト追加, 2012年7月8日 (日) 04:08
.UsingFile("firstProject.db") // SQLiteファイルのパスを指定する。
</source>
 
=== オートマッピング(自動マッピング) ===
Fluent NHibernateにはオートマッピング(auto mappings)という、プログラマが書いたエンティティ(クラス)から自動的にリレーショナルデータベース上にテーブルなどを生成する機能がある。
 
==== 例 ====
<source lang="csharp">
public class Product
{
public virtual int Id { get; set; }
public virtual string Name { get; set; }
public virtual decimal Price { get; set; }
}
 
public class Shelf
{
public virtual int Id { get; set; }
public virtual IList<Product> Products { get; set; }
 
public Shelf()
{
Products = new List<Product>();
}
}
</source>
 
上記のようなクラス群があるとして、Fluent NHibernateの接続設定を以下のように記述し、実行すると、データベースへの初回接続時にクラスに対応するテーブルなどを自動生成しようと試みる。何かしらの理由で生成に失敗した場合は例外が発生する。
<source lang="csharp">
using FluentNHibernate;
using FluentNHibernate.Cfg;
using FluentNHibernate.Cfg.Db;
using FluentNHibernate.Automapping;
using NHibernate;
using NHibernate.Tool.hbm2ddl;
 
public class SampleApp
{
public void Main(string[] args)
{
// MySQLの場合
var fnConfig = Fluently.Configure()
.Database(/* 接続設定 */)
.Mappings(map =>
map.AutoMappings.Add(AutoMap.AssemblyOf<Product>())
)
;
var factory = fnConfig.BuildSessionFactory();
}
</source>
 
=== フルーエントマッピング(手動マッピング) ===
Fluent NHibernateではオートマッピングに加えフルーエントマッピング(fluent mappings)という手動マッピング機能を用意している。
 
マッピング設定にXMLファイルではなくC#のソースコードを用いるというFluent NHibernateの主目的ともいえる機能である。他サイトのサンプルを見る限り、大半の人はオートマッピングよりも細かく設定できるこちらを使っているようだ。
{{stub}}
匿名利用者