在运行时添加nHibernate映射?

在运行时添加nHibernate映射?,nhibernate,Nhibernate,背景: 我在尝试使用nHibernate时遇到映射失败。应用程序由几个程序集组成。其中一个程序集是有用例程的库,另一个是使用该库的应用程序代码。库程序集将自己添加到nHibernate配置中,但由于它不知道其他程序集,因此不会添加它们。我的xml映射文件位于应用程序集中。我认为它没有找到它,因为它没有在应用程序集中查找 问题: 是否可以映射到任意程序集中的类而不将其添加到配置中 如果没有,能否在运行时添加映射 谢谢 p、 美国。 我确实确保映射文件被标记为嵌入式资源 更新-2009年4月3日

背景:

我在尝试使用nHibernate时遇到映射失败。应用程序由几个程序集组成。其中一个程序集是有用例程的库,另一个是使用该库的应用程序代码。库程序集将自己添加到nHibernate配置中,但由于它不知道其他程序集,因此不会添加它们。我的xml映射文件位于应用程序集中。我认为它没有找到它,因为它没有在应用程序集中查找

问题: 是否可以映射到任意程序集中的类而不将其添加到配置中

如果没有,能否在运行时添加映射

谢谢

p、 美国。 我确实确保映射文件被标记为嵌入式资源


更新-2009年4月3日


我更改了基础库以允许在初始化时添加程序集。这似乎非常有效。

您可以在构建会话工厂时在运行时添加映射:

ISessionFactory sf = new Configuration()
    .AddFile("Item.hbm.xml")
    .AddFile("Bid.hbm.xml")
    .BuildSessionFactory();
或使用组件:

ISessionFactory sf = new Configuration()
    .AddAssembly("NHibernate.Auction")
    .BuildSessionFactory();

回复您的评论-否构建会话工厂后,您无法添加映射。但是,您可以重新创建会话工厂。请记住,这可能是一个昂贵的操作(一秒钟左右)。

谢谢:)我看到了这个选项,不幸的是,代码在库程序集中。它不知道其中的其他程序集或映射。你能在建立/打开会话后添加它们吗?谢谢,这有助于确认我的想法:)