NHibernate測試的幾個小問題

2022-02-21 11:58:02 字數 2892 閱讀 2320

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