「Fluent NHibernate/オートマッピング」の版間の差分

提供: MonoBook
ナビゲーションに移動 検索に移動
imported>Administrator
(ページの作成:「Fluent NHibernateには'''オートマッピング'''(auto mappings)という、プログラマが書いたエンティティ(クラス)から自動的に...」)
 
imported>Administrator
 
49行目: 49行目:
 
== 関連項目 ==
 
== 関連項目 ==
 
* [[Fluent NHibernate]]
 
* [[Fluent NHibernate]]
 
+
* [[Fluent NHibernate/フルーエントマッピング]]
 
== 参考文献 ==
 
== 参考文献 ==
<referecnes/>
+
<references/>
  
 
== 外部リンク ==
 
== 外部リンク ==
  
 
{{stub}}
 
{{stub}}

2012年7月8日 (日) 05:38時点における最新版

Fluent NHibernateにはオートマッピング(auto mappings)という、プログラマが書いたエンティティ(クラス)から自動的にリレーショナルデータベース上にテーブルなどを生成する機能がある。

使用例[編集 | ソースを編集]

まず、以下のようなエンティティクラスを記述する。

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>();
    }
}

Fluent NHibernateの接続設定の中にオートマッピングに関する記述をし、プログラムを実行すると、データベースへの初回接続時にクラスに対応するテーブルなどを自動生成しようと試みる。何かしらの理由で生成に失敗した場合は例外が発生する。

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>()) // これがオートマッピングの指定。Productクラスと愉快な仲間たちが自動的マッピングされる。
            )
            ;
        var factory = fnConfig.BuildSessionFactory();
    }

関連項目[編集 | ソースを編集]

参考文献[編集 | ソースを編集]


外部リンク[編集 | ソースを編集]