メインメニューを開く

差分

Fluent NHibernate/フルーエントマッピング

2,593 バイト追加, 2012年7月8日 (日) 06:04
編集の要約なし
日本語の情報もほとんどない。
== 記述例 使い方 ===== エンティティを作る ===まずエンティティとなるクラスを作る。 プロジェクトの中に「Entities」というディレクトリを作り、その中に格納しておくとわかりやすいと思う。<class lang="csharp">// 従業員エンティティクラスpublic class Employee{ public virtual int Id { get; private set; } public virtual string FirstName { get; set; } public virtual string LastName { get; set; }}</source> === マッピングを作る ===次にマッピングを記述するクラスを作る。マッピングクラスはClassMap<>クラスを継承して作る。 プロジェクト内に「Mappings」というディレクトリを作り、その中に格納しておくとわかりやすいと思う。<source lang="csharp">// 従業員マッピングクラスpublic class EmployeeMap : ClassMap<Employee>{ // デフォルトコンストラクタ // この中でマッピングの詳細を記述する。 public EmployeeMap() { // プライマリキー Id(x => x.Id); // 普通のマッピング Map(x => x.FirstName); Map(x => x.LastName); }}</source> === アプリを作る ===次に実際にアプリケーションを作る。 <source lang="csharp">class AppMain{ public static void Main(string[] args) { var config = Fluently.Configure() // 接続設定 .Database( SQLiteConfiguration.Standard .UsingFile("firstProject.db") ) // マッピングのありかを明示する。 // 適当なクラスを指定すると、そのクラスが属するアセンブリ内の // マッピングクラスを自動検知して、あとは全自動でやってくれる。 .Mappings(map => map.FluentMappings.AddFromAssemblyOf<AppMain>()) // マッピングからスキーマを自動生成する。 .ExposeConfiguration(cfg => new SchemaExport(cfg).Create(false, true)) ;  var factory = config.BuildSessionFactory();  // 実際に使ってみる using (var session = factory.OpenSession()) using (var transaction = session.BeginTransaction()) { // insertしてみる var emp = new Expolyee(); emp.FirstName = "test"; emp.LastName = "tarou"; session.SaveOrUpdate(emp);  transaction.Commit(); } }}</source> <!--
{{stub}}
大雑把に言えばオートマッピングの記述例のAutoMappingsの部分がFluentMappingsになるような感じである。
)
</source>
-->
== 関連項目 ==
* [[Fluent NHibernate]]
匿名利用者