Configuring NHibernate with code
使用代码配置NHibernate
使用代码同样可以完成NHibernate的配置。本节将介绍如何使用NHibernate.Cfg.Loquacious命名空间来配置NHibernate。
准备工作
1. 完成第一章中Eg.Core项目的模式和映射部分.
2. 在你的解决方案中添加一个名为ConfigByCode的控制台项目.3. 将她设置为启动项目.4. 为该项目添加NHibernate.dll 和NHibernate.ByteCode.Castle.dll引用,这两个文件在Lib文件夹中.5. 为该项目添加到Eg.Core的引用.步骤
1. 添加一个App.config文件如下:
2. 打开Program.cs,添加如下using语句:
using NHibernate.ByteCode.Castle;using NHibernate.Cfg;using NHibernate.Cfg.Loquacious;using NHibernate.Dialect;
3. 在Main函数中添加下面的代码以完成对NHibernate的配置:
var nhConfig = new Configuration() .Proxy(proxy => proxy.ProxyFactoryFactory()) .DataBaseIntegration(db => { db.Dialect (); db.ConnectionStringName = "db"; db.BatchSize = 100; }) .AddAssembly("Eg.Core");var sessionFactory = nhConfig.BuildSessionFactory();Console.WriteLine("NHibernate Configured!");Console.ReadKey();
4. 编译运行,可以看到提示文本NHibernate Configured!.
原理
在这个示例中,我们使用NHibernate.Cfg.Loquacious命名空间中的扩展方法完成了NHibernate的配置。这些方法也是类型安全的。我们使用Proxy扩展方法来指定proxyfactory.factory_class. 然后,使用了DatabaseIntegration方法指定了dialect, connection.connection_string_name , 和adonet.batch_size . 最后使用AddAssembly方法添加了映射(嵌入在程序集中).AddAssembly不是扩展方法,在大多NHibernate版本中,她已经成为NHibernate配置API的一部分。
扩展
注意,我们仍旧使用了在App.config中定义的db连接字符串。如果想完全取消App.config文件,可以使用如下代码:
db.ConnectionString = @"Connection string here...";
但是,由于上诉代码是硬编码,所以即使配置有了一个小小的改动,我们也需要修改代码并重新编译.