1、首先是對映的實體類,例如customer類。由於我採用ddd的方式,將領域邏輯也放入到該實體類中,且通過建構函式傳入了乙個repository物件,**如下:
public
class
customer
public
virtual
string name
public
virtual
datetime birthday
public
virtual
string address
public customer(icustomerrepository repository)
public
customer load(int customerid) }
public customer()
public
virtual
customer load(int customerid)
2、如果使用visual studio team suite自帶的測試框架,則會帶來無法找到hibernate.cfg.xml檔案的問題。在一般的測試框架下,我們可以將該檔案的copy to output directory屬性設定為「copy always」即可。但由於vsts自帶的測試框架會將相關檔案放到自動生成的testresult下的臨時資料夾中。因此,可能會丟擲如下的異常:
nhibernate.cfg.hibernateconfigexception: an exception occurred during configuration of persistence layer. ---> system.io.directorynotfoundexception: 未能找到路徑「c:\program files\microsoft visual studio 9.0\common7\ide\publicassemblies;privateassemblies\hibernate.cfg.xml」的一部分。
乙個簡單的解決方案時將hibernate.cfg.xml拷貝到testresult目錄下,並將構建sessionfactory物件的方法修改為:
isessionfactory factory = new
configuration().configure(@"./../../hibernate.cfg.xml").buildsessionfactory();
好在這只是為了測試而做,所以方案變得如此醜陋,也是可以接受的。
3、關於hbm檔案。一般來說,我們需要將實體物件的hbm檔案例如customer.hbm.xml檔案的build action屬性設定為embedded resource即可。若要驗證該屬性的設定是否生效,可以通過reflector檢視該程式集下的resource。如下圖:
xmlversion
="1.0"
encoding
="utf-8"?>
<
hibernate-configuration
xmlns
="urn:nhibernate-configuration-2.2">
<
session-factory
name
="nhibernate.test">
<
property
name
="connection.driver_class">nhibernate.driver.sqlclientdriver
property
>
<
property
name
="connection.connection_string">
data source=.\sqlexpress;initial catalog=ebusiness;
integrated security=true;pooling=false
property
>
<
property
name
="adonet.batch_size">10
property
>
<
property
name
="show_sql">true
property
>
<
property
name
="dialect">nhibernate.dialect.mssql2005dialect
property
>
<
property
name
="use_outer_join">true
property
>
<
property
name
="command_timeout">60
property
>
<
property
name
="query.substitutions">true 1, false 0, yes 'y', no 'n'
property
>
<
property
name
="proxyfactory.factory_class">nhibernate.bytecode.castle.proxyfactoryfactory, nhibernate.bytecode.castle
property
>
<
assembly
="domainlayer"/>
session-factory
>
hibernate-configuration
>
NHibernate測試的幾個小問題
1 首先是對映的實體類,例如customer類。由於我採用ddd的方式,將領域邏輯也放入到該實體類中,且通過建構函式傳入了乙個repository物件,如下 public class customer public virtual string name public virtual datetim...
NHibernate測試的幾個小問題
1 首先是對映的實體類,例如customer類。由於我採用ddd的方式,將領域邏輯也放入到該實體類中,且通過建構函式傳入了乙個repository物件,如下 public class customer public virtual string name public virtual datetim...
NHibernate測試的幾個小問題
1 首先是對映的實體類,例如customer類。由於我採用ddd的方式,將領域邏輯也放入到該實體類中,且通過建構函式傳入了乙個repository物件,如下 public class customer public virtual string name public virtual datetim...