「Fluent NHibernate」の版間の差分
imported>Administrator |
imported>Administrator |
||
| 69行目: | 69行目: | ||
.UsingFile("firstProject.db") // SQLiteファイルのパスを指定する。 | .UsingFile("firstProject.db") // SQLiteファイルのパスを指定する。 | ||
</source> | </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}} | {{stub}} | ||