迷恋弦哥

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

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文件如下:

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 NHibernate.ByteCode.Castle;
using NHibernate.Cfg;
using NHibernate.Cfg.Loquacious;
using NHibernate.Dialect;

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

View Code
var nhConfig = new Configuration()
  .Proxy(proxy => 
    proxy.ProxyFactoryFactory<ProxyFactoryFactory>())
  .DataBaseIntegration(db =>
  {
    db.Dialect<MsSql2008Dialect>();
    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...";

  但是,由于上诉代码是硬编码,所以即使配置有了一个小小的改动,我们也需要修改代码并重新编译.

  

posted on 2012-07-06 16:56  迷恋弦哥  阅读(315)  评论(0编辑  收藏  举报