NHibernate測試的幾個小問題

2021-09-04 10:33:45 字數 1864 閱讀 7902

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...