我正在尝试第一次配置Fluent NHibernate。你得原谅我,因为我是新手。
如何让NHibernate、它的所有all和config XML位于一个类库项目中?我的解决方案是一个典型的三层应用程序,其中web层(MVC3)引用了一个业务层(类库),引用了一个数据访问层(类库)。不存在从web层到数据访问层的直接引用。
我遇到了各种各样的问题,比如NHibernate试图在/bin根目录中查找hibernate.cfg.xml文件,出现错误说它无法找到NHibernate.ByteCode.Castle或它的一个依赖项,还有一些随机出现的问题。当我引用MVC项目和DataAccess项目中的所有NHibernate DLL并将hibernate.cfg.xml放入MVC项目中时,一切都很好,但对我来说,这两者似乎都不是一个好主意。
必须有一种简单的方法来做到这一点!
有人能给我介绍一个以这种方式配置NHibernate的示例项目吗?
发布于 2012-01-16 23:47:02
所以我找到了我自己问题的答案。hibernate.cfg.xml文件必须位于web目录中的原因是因为我引用它的方式。您必须嵌入资源并以完全限定的方式引用它,而不是通过名称来引用它:
Configuration configuration = new Configuration().Configure(Assembly.GetExecutingAssembly(), "MyDataAccessApp.hibernate.cfg.xml");其次,必要的BIN没有被放入根NHibernate.ByteCode.Castle文件夹,因为Visual Studio错误地认为它是不需要的(因为没有显式的代码引用)。所以,这个问题可以通过我发现的三种方式来解决:
希望这能帮助到其他人。
发布于 2012-01-14 11:22:17
正如我在评论中指出的,自动化这一过程的“最佳”方法是在DataLayer项目上构建之后运行的构建后脚本。
我会把
copy $(TargetDir)\NHibernate.ByteCode.Castle.dll $(SolutionDir)\REL_PATH_TO_MVC_PROJECT\bin您也可以将其作为MVC的预构建来使用。
发布于 2012-01-16 23:16:44
您还可以尝试使用ILMerge将所有NHibernate组件合并到数据访问程序集中,这样就只有一个库可供引用。
https://stackoverflow.com/questions/8856825
复制相似问题