通俗易懂的Nhibernate教程(2) ---- 配置之Nhiber…
2018-06-17 21:34:48来源:未知 阅读 ()
在上一个教程中,我们讲了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= new NHibernate.Cfg.Configuration().Configure();
第二:通过Web.config/App.config
配置节处理程序:NHibernate.Cfg.ConfigurationSectionHandler,Nhibernate
Web.config/App.config文件:
<?xml version="1.0" encoding="utf-8" ?> <configuration> <configSections> <section name="hibernate-configuration" type="NHibernate.Cfg.ConfigurationSectionHandler,Nhibernate"/> </configSections> <hibernate-configuration xmlns="urn:nhibernate-configuration-2.2"> <session-factory name="XShopFactory"> <property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property> <property name="connection.connection_string"> Server=.;initial catalog=XShopDb;Integrated Security=SSPI </property> <property name="dialect">NHibernate.Dialect.MsSql2008Dialect</property> <property name="show_sql">true</property> <mapping assembly="Mapping"/> </session-factory> </hibernate-configuration> <startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" /> </startup> </configuration>配置:同样方式
NHibernate.Cfg.Configuration config= new NHibernate.Cfg.Configuration().Configure();
第三:通过代码实现
//通过代码实现 IDictionary<string, string> props = new Dictionary<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"); var config = new Configuration().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关键字了。 MySQL 3 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 --张小军
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- python学习-44 程序的解耦 (不是特别懂的,回头在复习) 2019-07-24
- python的基本数据类型(一) 2019-04-25
- Python中一些基础知识点的汇总:零基础也能看懂的Python基础 2018-08-26
- 编程语言介绍 2018-08-14
- 用 Python 抓网页?所有疑问都总结在这了,你还有不懂的吗? 2018-08-13
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash