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 =
newconfiguration().configure(
@"./../../hibernate.cfg.xml").buildsessionfactory();
好在這只是為了測試而做,所以方案變得如此醜陋,也是可以接受的。
3、關於hbm檔案。一般來說,我們需要將實體物件的hbm檔案例如customer.hbm.xml檔案的build action屬性設定為embedded resource即可。若要驗證該屬性的設定是否生效,可以通過reflector檢視該程式集下的resource。如下圖:
<?xml version="1.0" encoding="utf-8" ?>
nhibernate.driver.sqlclientdriver
data source=.\sqlexpress;initial catalog=ebusiness;
integrated security=true;pooling=false
10true
nhibernate.dialect.mssql2005dialect
true
60true 1, false 0, yes 'y', no 'n'
nhibernate.bytecode.castle.proxyfactoryfactory,
nhibernate.bytecode.castle
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...