背景
尝试使用nHibernate时,我遇到映射失败。该应用程序由几个程序集组成。其中一个程序集是一个有用的例程库,另一个是使用该库的应用程序代码。库程序集将自身添加到nHibernate配置中,但由于它不了解其他程序集,因此不会添加它们。我的xml映射文件位于应用程序集中。我认为它没有找到它,因为它没有查看应用程序集。
问题: 您是否可以映射到任意程序集中的类而不将其添加到配置中?
如果没有,您可以在运行时添加映射吗?
由于
P.S。 我确实确保映射文件被标记为嵌入式资源
更新 - 2009年4月3日
我更改了底层库以允许在初始化时添加程序集。这似乎很有效。
答案 0 :(得分:8)
您可以在构建会话工厂时在运行时添加映射:
ISessionFactory sf = new Configuration()
.AddFile("Item.hbm.xml")
.AddFile("Bid.hbm.xml")
.BuildSessionFactory();
或使用程序集:
ISessionFactory sf = new Configuration()
.AddAssembly("NHibernate.Auction")
.BuildSessionFactory();
答案 1 :(得分:3)
重新评论 - 一旦构建会话工厂,就不能添加映射。但是,您可以重新创建会话工厂。请记住,它可能是昂贵的操作(大约一秒钟)。