迷恋弦哥

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

Configuring NHibernate with Fluent NHibernate

使用Fluent NHibernate配置NHibernate

  配置NHibernate时,Fluent NHibernate除了fluent mappings和auto-mappings外,还有其特色的代码配置语法。本节将介绍如何使用Fluent NHibernate语法来配置NHibernate.

准备

  1. 完成第一章中Creating Mappings Fluently小节中Eg.FluentMappings项目的模式和映射部分.
  2. 在你的解决方案中添加一个名为ConfigByFNH的控制台项目.
  3. 将她设置为启动项目.
  4. 为该项目添加NHibernate.dll 、NHibernate.ByteCode.Castle.dll和FluentNHibernate.dll引用,这三个文件在Lib文件夹中.
  5. 为该项目添加到Eg.FluentMappings的引用.

步骤

1.   添加一个App.config文件如下:

View Code
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <connectionStrings>
    <add name="db" connectionString="Server=.\SQLExpress; 
Database=NHCookbook; Trusted_Connection=SSPI"/>
  </connectionStrings>
</configuration>

2.   打开Program.cs,添加如下using语句:

View Code
using Eg.FluentMappings.Mappings;
using FluentNHibernate.Cfg;
using FluentNHibernate.Cfg.Db;
using NHibernate.ByteCode.Castle;

3.   在Main函数中添加下面的代码以完成对NHibernate的配置:

View Code
var nhConfig = Fluently.Configure()
  .Database(MsSqlConfiguration.MsSql2008
    .ConnectionString(connstr =>
      connstr.FromConnectionStringWithKey("db")
    )
    .ProxyFactoryFactory<ProxyFactoryFactory>()
    .AdoNetBatchSize(100)
  )
  .Mappings(mappings => mappings.FluentMappings
    .AddFromAssemblyOf<ProductMapping>()
  )
  .BuildConfiguration();
var sessionFactory = nhConfig.BuildSessionFactory();
Console.WriteLine("NHibernate configured fluently!");
Console.ReadKey();

4.   编译运行,可以看到提示文本NHibernate Configured!.

原理

  我们的fluent配置可以分解为三个部分. 第一部分,配置了下面所列的属性:
1.   使用MsSql2008静态属性将dialect属性设置为MsSql2008Dialect .
2.   通过调用FromConnectionStringWithKey将connection.connection_string_name设置为db.
3.   通过调用ProxyFactoryFactory将proxyfactory.factory_class设置为Castle的DynamicProxy2代理工厂.
4.   通过调用AdoNetBatchSize将adonet.batch_size设置为100.
  下一步,加载了配置中的映射. 本示例中, 我们加载了第一章中的fluent mappings. Fluent NHibernate会通过扫描整个程序集来加载所有可以被她识别的fluent
mappings. Fluent NHibernate允许混合使用fluent mappings, auto-mappings,和标准的hbm.xml映射文件.
  最后通过fluent的配置, 生成了一个标准的NHibernate配置.

posted on 2012-07-08 22:18  迷恋弦哥  阅读(427)  评论(0)    收藏  举报