2009-12-01 59 views
2

我所有的數據邏輯都在另一個數據層項目,我在我的asp.net mvc項目中引用。爲什麼我需要在我的asp.net mvc項目中引用nhibernate.dll?

現在,如果我稱之爲:

CategoryDAO.GetById(1); 

,一切工作正常。

如果我稱之爲:

CategoryDAO.GetBlah(1); 

VS.NET抱怨說

"Error 102: The type 'NHibernate.Criterion.Order' is defined in an assembly 
that is not referenced. You must add a reference to assembly 'NHibernate, 
Version=2.1.2.4000, Culture=neutral, PublicKeyToken=aa95f207798dfdb4'." 

如果我nhibernate.dll添加爲我的web項目的引用,它的工作原理。

這是爲什麼?邏輯/代碼位於我的數據層,它與GetById(1)的調用返回相同,爲什麼需要添加引用?

回答

1

我猜這是因爲構建到對象中的延遲加載。 NHibernate創建從你的類繼承的代理對象(這就是爲什麼你需要聲明你的方法是虛擬的)。我猜是因爲代理對象需要引用。

+0

代理是由城堡動態代理或linfu創建的 – Paco 2009-12-01 21:58:20

+0

啊,感謝您的信息。我仍然是NHibernate的新手。 – 2009-12-01 22:58:34

相關問題