NHibernate.3.0.Cookbook第二章第6节的翻译

Configuring NHibernate using ConfORM Mappings

使用ConfORM映射配置NHibernate

  正如第一章中所示,ConfORM基于约定来生成HbmMapping对象,这些对象可以被直接添加到NHibernate配置中.本节介绍如何使用ConfORM映射配置NHibernate.

准备

1.   完成第一章中Complete Mapping with ConfORM小节中Eg.ConfORMMappings项目的模式和映射部分.
2.   在你的解决方案中添加一个名为ConfigWithConfORM的控制台项目.
3.   将她设置为启动项目.
4.   为该项目添加NHibernate.dll和NHibernate.ByteCode.Castle.dll引用,这两个文件在Lib文件夹中.
5.   为该项目添加到Eg.ConfORMMappings 的引用.

步骤

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

View Code
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <section name="hibernate-configuration" 
             type="NHibernate.Cfg.ConfigurationSectionHandler, 
NHibernate"/>
  </configSections>
  <connectionStrings>
    <add name="db" connectionString="Server=.\SQLExpress; 
Database=NHCookbook; Trusted_Connection=SSPI"/>
  </connectionStrings>
  <hibernate-configuration 
    xmlns="urn:nhibernate-configuration-2.2">
    <session-factory>
      <property name="proxyfactory.factory_class">
        NHibernate.ByteCode.Castle.ProxyFactoryFactory, 
        NHibernate.ByteCode.Castle
      </property>
      <property name="dialect">
        NHibernate.Dialect.MsSql2008Dialect, 
        NHibernate
      </property>
      <property name="connection.connection_string_name">
        db
      </property>
      <property name="adonet.batch_size">
        100
      </property>
    </session-factory>
  </hibernate-configuration>
</configuration>

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

View Code
using Eg.ConfORMMapping.Mappings;
using NHibernate.Cfg;

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

View Code
var mappingFactory = new MappingFactory();
var mapping = mappingFactory.CreateMapping();
var nhConfig = new Configuration().Configure();
nhConfig.AddDeserializedMapping(mapping, null);
var sessionFactory = nhConfig.BuildSessionFactory();
Console.WriteLine("NHibernate configured!");
Console.ReadKey();

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

原理

  在这个示例中,App.config和第一个配置示例中的App.config几乎完全相同.只是将<mapping>元素移除,该元素是用来告诉NHibernate从哪个程序集中加载映射(嵌入式的hbm.xml文件). 现在我们使用ConfORM来为我们的实体类模型创建HbmMapping对象.我们创建了MappingFactory并调用了她的CreateMapping方法.
  然后,我们生成了NHibernate配置对象,并从App.config中加载了她的配置(使用App.config来配置她).
  调用AddDeserializedMapping才是本示例的关键所在.  如该方法的名字所示,她确实是一个被并行化的XML映射,除非该映射是用code而非XML来生成的。 事实上, 我们可以用.NET  XmlSerializer去串行化一个HbmMapping对象,以获得一个(人)可读的XML映射.

扩展

  配置NHibernate时,与使用普通的嵌入式XML映射相比,使用code来生成的映射,会在速度上得到了提升。至于Fluent NHibernate也是会将映射串行化到XML文件中,以便NHibernate将她们并行化.

转载于:https://www.cnblogs.com/carfieldSE/archive/2012/07/09/2582024.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值