在运行时添加nHibernate映射?

时间:2009-03-31 17:42:57

标签: nhibernate

背景

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

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

如果没有,您可以在运行时添加映射吗?

由于

P.S。 我确实确保映射文件被标记为嵌入式资源


更新 - 2009年4月3日

我更改了底层库以允许在初始化时添加程序集。这似乎很有效。

2 个答案:

答案 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)

重新评论 - 一旦构建会话工厂,就不能添加映射。但是,您可以重新创建会话工厂。请记住,它可能是昂贵的操作(大约一秒钟)。