国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

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

2019-11-14 15:51:25
字體:
來源:轉載
供稿:網友

在上一個教程中,我們講了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

設置NHibernateDialect類名 - 允許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

為單向關聯(一對一, 多對一)的外連接抓?。?/span>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 將導致符號truefalse在生成的SQL中被翻譯成整數常量

show_sql

輸出所有SQL語句到控制臺.

可用值: true | false

hbm2ddl.auto

ISessionFactory創建時,自動檢查數據庫結構,或者將數據庫schemaDDL導出到數據庫。

使用 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

 

關系型數據庫方言備注
DB2NHibernate.Dialect.DB2Dialect 
DB2 for iSeries (OS/400)NHibernate.Dialect.DB2400Dialect 
IngresNHibernate.Dialect.IngresDialect 
PostgreSQLNHibernate.Dialect.PostgreSQLDialect 
PostgreSQL 8.1NHibernate.Dialect.PostgreSQL81Dialect方言在PostgreSQL8.1中現在支持FOR UPDATE NOWAIT了。
PostgreSQL 8.2NHibernate.Dialect.PostgreSQL82Dialect方言在PostgreSQL8.2中現在支持在 DROP TABLEDROP SEQUENCE中使用IF EXISTS關鍵字了。
MySQL 3 or 4NHibernate.Dialect.MySQLDialect 
MySQL 5NHibernate.Dialect.MySQL5Dialect 
Oracle (any version)NHibernate.Dialect.OracleDialect 
Oracle 9/10gNHibernate.Dialect.Oracle9Dialect 
Sybase Adaptive Server EnterpriseNHibernate.Dialect.SybaseDialect 
Sybase Adaptive Server AnywhereNHibernate.Dialect.SybaseAnywhereDialect 
Microsoft SQL Server 2000NHibernate.Dialect.MsSql2000Dialect 
Microsoft SQL Server 2005NHibernate.Dialect.MsSql2005Dialect 
Microsoft SQL Server 2005 Everywhere EditionNHibernate.Dialect.MsSqlCeDialect 
Microsoft SQL Server 7NHibernate.Dialect.MsSql7Dialect 
FirebirdNHibernate.Dialect.FirebirdDialectdriver_class設置為 NHibernate.Driver.FirebirdClientDriver啟用Firebird provider for .NET 2.0。
SQLiteNHibernate.Dialect.SQLiteDialectdriver_class設置為NHibernate.Driver.SQLite20Driver啟用System.Data.SQLite provider for .NET 2.0。
Ingres 3.0NHibernate.Dialect.IngresDialect 

 

--今天就暫時寫這么一點,下次繼續更新

 

表格來自 http://m.survivalescaperooms.com/kiler/  @kiler前輩的NHibernate中文文檔

 

原創文章,轉載請注明出處:http://m.survivalescaperooms.com/zhxj/

2015.08.23 --張小軍


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 昭通市| 闽侯县| 罗平县| 营口市| 永吉县| 邵武市| 西华县| 兴宁市| 连平县| 德兴市| 砀山县| 建德市| 漠河县| 满洲里市| 永新县| 扎赉特旗| 蓬安县| 奉贤区| 陆良县| 桃源县| 左云县| 岱山县| 海宁市| 临海市| 浦江县| 东丰县| 全南县| 五河县| 柳林县| 石台县| 响水县| 汾阳市| 长武县| 霍城县| 西充县| 盘山县| 遂宁市| 包头市| 吉林市| 新巴尔虎右旗| 论坛|