Configuring NHibernate with Fluent NHibernate
使用Fluent NHibernate配置NHibernate
配置NHibernate时,Fluent NHibernate除了fluent mappings和auto-mappings外,还有其特色的代码配置语法。本节将介绍如何使用Fluent NHibernate语法来配置NHibernate.
准备
- 完成第一章中Creating Mappings Fluently小节中Eg.FluentMappings项目的模式和映射部分.
- 在你的解决方案中添加一个名为ConfigByFNH的控制台项目.
- 将她设置为启动项目.
- 为该项目添加NHibernate.dll 、NHibernate.ByteCode.Castle.dll和FluentNHibernate.dll引用,这三个文件在Lib文件夹中.
- 为该项目添加到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配置.


浙公网安备 33010602011771号