分享
 
 
 

通俗易懂的Nhibernate教程----配置之Nhibernate配置

王朝学院·作者佚名  2016-08-27
窄屏简体版  字體: |||超大  

在上一个教程中,我们讲了Nhibernate的基本使用!So,让我们回顾下Nhibernate使用基本的步骤吧

1.NHibernate配置 ----- 这一步我们告诉了Nhibernate:数据库连接字符串,实体类所在的程序集,映射文件所在的程序集………

2.创建实体类 ----- 定义了数据实体 (O/RM中的O,Object)

3.创建映射文件 ----- 定义了 实体和表 之间的映射关系 (O/RM中的M,Mapping)

4.创建数据库和表 ----- 创建 数据库和表 (O/RM中的R,RelationDatabase)

………………

OK,在这一节里面,我将会详细讲解第一步:NHibernate配置

一:Nhibernate配置方式

NHibernate配置的方式有N种

第一:通过hibernate.cfg.xml配置文件,也就是上一个教程中所采用的配置方式,通过应用程序目录的hibernate.cfg.xml文件

配置:

NHibernate.Cfg.Configuration config=newNHibernate.Cfg.Configuration().Configure();

第二:通过Web.config/App.config

配置节处理程序:NHibernate.Cfg.ConfigurationSectionHandler,Nhibernate

Web.config/App.config文件:

<?xml version="1.0" encoding="utf-8"?><configuration><configSections><sectionname="hibernate-configuration"type="NHibernate.Cfg.ConfigurationSectionHandler,Nhibernate"/></configSections><hibernate-configurationxmlns="urn:nhibernate-configuration-2.2"><session-factoryname="XShopFactory"><PRopertyname="connection.provider">NHibernate.Connection.DriverConnectionProvider</property><propertyname="connection.connection_string">Server=.;initial catalog=XShopDb;Integrated Security=SSPI</property><propertyname="dialect">NHibernate.Dialect.MsSql2008Dialect</property><propertyname="show_sql">true</property><mappingassembly="Mapping"/></session-factory></hibernate-configuration><startup><supportedRuntimeversion="v4.0"sku=".NETFramework,Version=v4.5"/></startup></configuration>

配置:同样方式

NHibernate.Cfg.Configuration config=newNHibernate.Cfg.Configuration().Configure();

第三:通过代码实现

//通过代码实现IDictionary<string,string> props =newDictionary<string,string>();

props.Add("connection.provider","NHibernate.Connection.DriverConnectionProvider");

props.Add("connection.connection_string","Server=.;initial catalog=XShopDb;Integrated Security=SSPI");

props.Add("dialect","NHibernate.Dialect.MsSql2008Dialect");varconfig =newConfiguration().AddProperties(props).AddAssembly("Mapping").Configure();

附:property可选属性

属性名

用途

dialect

设置NHibernate的Dialect类名-允许NHibernate针对特定的关系数据库生成优化的SQL ,

可用值:见下表

full.classname.of.Dialect, assembly

default_schema

在生成的SQL中,将给定的schema/tablespace附加于非全限定名的表名上。

可用值:SCHEMA_NAME

use_outer_join

允许外连接抓取,已弃用,请使用max_fetch_depth。

可用值:true|false

max_fetch_depth

为单向关联(一对一,多对一)的外连接抓取(outer join fetch)树设置最大深度。

值为0意味着将关闭默认的外连接抓取

可用值:建议在0到3之间取值。

use_reflection_optimizer

开启运行时代码动态生成来替代运行时反射机制(系统级属性)。

使用这种方式的话程序在启动会耗费一定的性能,但是在程序运行期性能会有更好的提升。

注意即使关闭这个优化, Hibernate还是需要CGLIB.你不能在hibernate.cfg.xml中设置此属性。

这个属性不能在hibernate.cfg.xml或者是应用程序配置文件<hibernate-configuration>配置节中设置。

可用值:true|false

bytecode.provider

指定字节码provider用于优化NHibernate反射性能。null代表完全关闭性能优化,

lcg用于轻量级的代码动态生成,codedom基于CodeDOM代码动态生成。

可用值:null|lcg|codedom

cache.provider_class

设置缓存实现类(实现ICacheProvider接口的类)

可用值:classname.of.CacheProvider, assembly

cache.use_minimal_puts

以频繁的读操作为代价,优化二级缓存来最小化写操作(对群集缓存有效)。

可用值:true|false

cache.use_query_cache

允许查询缓存,个别查询仍然需要被设置为可缓存的.

可用值:true|false

cache.query_cache_factory

自定义实现IQueryCacheFactory接口的类名,默认为内建的StandardQueryCacheFactory。

可用值:classname.of.QueryCacheFactory, assembly

cache.region_prefix

二级缓存区域名的前缀。

可用值:prefix

query.substitutions

将NHibernate查询中的符号映射到SQL查询中的符号(符号可能是函数名或常量名字)。

可用值:hqlLiteral=SQL_LITERAL, hqlFunction=SQLFUNC

query.substitutions true=1, false=0将导致符号true和false在生成的SQL中被翻译成整数常量

show_sql

输出所有SQL语句到控制台.

可用值:true|false

hbm2ddl.auto

在ISessionFactory创建时,自动检查数据库结构,或者将数据库schema的DDL导出到数据库。

使用create-drop时,在显式关闭ISessionFactory时,将drop掉数据库schema。

可用值:create|create-drop

use_proxy_validator

是否启用验证接口或者是类是否可以使用代理,默认开启。

(检查实体类的属性或者是方法是否被设置为Virtual)

可用值:true|false

transaction.factory_class

自定义ITransactionFactory的实现,默认为NHibernate内建的AdoNetTransactionFactory。

可用值:classname.of.TransactionFactory, assembly

附:数据库方言:dialect

关系型数据库方言备注DB2

NHibernate.Dialect.DB2Dialect

DB2 for iSeries (OS/400)

NHibernate.Dialect.DB2400Dialect

Ingres

NHibernate.Dialect.IngresDialect

PostgreSQL

NHibernate.Dialect.PostgreSQLDialect

PostgreSQL 8.1

NHibernate.Dialect.PostgreSQL81Dialect

方言在PostgreSQL8.1中现在支持FOR UPDATE NOWAIT了。

PostgreSQL 8.2

NHibernate.Dialect.PostgreSQL82Dialect

方言在PostgreSQL8.2中现在支持在DROP TABLE和DROP SEQUENCE中使用IF EXISTS关键字了。

MySQL3 or 4

NHibernate.Dialect.MySQLDialect

MySQL 5

NHibernate.Dialect.MySQL5Dialect

Oracle(any version)

NHibernate.Dialect.OracleDialect

Oracle 9/10g

NHibernate.Dialect.Oracle9Dialect

Sybase Adaptive Server Enterprise

NHibernate.Dialect.SybaseDialect

Sybase Adaptive Server Anywhere

NHibernate.Dialect.SybaseAnywhereDialect

Microsoft SQL Server 2000

NHibernate.Dialect.MsSql2000Dialect

Microsoft SQL Server 2005

NHibernate.Dialect.MsSql2005Dialect

Microsoft SQL Server 2005 Everywhere Edition

NHibernate.Dialect.MsSqlCeDialect

Microsoft SQL Server 7

NHibernate.Dialect.MsSql7Dialect

Firebird

NHibernate.Dialect.FirebirdDialect

把driver_class设置为NHibernate.Driver.FirebirdClientDriver启用Firebird provider for .NET 2.0。

SQLite

NHibernate.Dialect.SQLiteDialect

把driver_class设置为NHibernate.Driver.SQLite20Driver启用System.Data.SQLite provider for .NET 2.0。

Ingres 3.0

NHibernate.Dialect.IngresDialect

--今天就暂时写这么一点,下次继续更新

表格来自http://www.cnblogs.com/kiler/ @kiler前辈的NHibernate中文文档

原创文章,转载请注明出处:http://www.cnblogs.com/zhxj/

2015.08.23 --张小军

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有