Visual studio 为什么我需要在asp.net mvc项目中引用nhibernate.dll?

Visual studio 为什么我需要在asp.net mvc项目中引用nhibernate.dll?,visual-studio,nhibernate,assemblies,Visual Studio,Nhibernate,Assemblies,我所有的数据逻辑都在我在asp.net mvc项目中引用的另一个数据层项目中 现在如果我打电话: 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

我所有的数据逻辑都在我在asp.net mvc项目中引用的另一个数据层项目中

现在如果我打电话:

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'."
如果我在我的web项目中添加nhibernate.dll作为引用,它就会工作


为什么会这样?逻辑/代码在我的数据层中,它的返回与对GetById(1)的调用相同,为什么我需要添加引用?

我猜这是因为构建到对象中的延迟加载。NHibernate创建从类继承的代理对象(这就是为什么需要将方法声明为虚拟的)。我猜引用是需要的,因为代理对象。

代理是由castle dynamic proxy或linfu创建的