我可以给nhibernate会话工厂提供要加载的映射列表吗?

时间:2011-07-26 20:05:36

标签: nhibernate

现在,会话工厂只找到嵌入在当前程序集中的所有.hbm.xml文件。我现在有一种情况,我只希望会话工厂加载我指定的映射列表。我怎么能这样做?

谢谢,

艾萨克

2 个答案:

答案 0 :(得分:2)

您可以使用Configuration.AddResources(IEnumerable<string> paths, Assembly assembly)并指定所需的映射列表,如果您坚持将映射嵌入到同一个程序集中,请执行自己的过滤。否则我会推荐塞尔吉奥的答案。

您可以在Configuration类上使用静态方法返回程序集中可用映射的列表,然后您可以删除不需要的映射:

var mappings = Configuration.GetAllHbmXmlResourceNames(assembly);
// TODO: filter mappings
cfg.AddResources(mappingsFiltered, assembly);

答案 1 :(得分:1)

那么,在NHibernate的配置中,你指定了嵌入映射的程序集吗?我建议根据您的需要动态更改配置。

在运行时执行此操作的另一种方法是使用NHibernate.cfg.Configuration.CreateMappings方法动态创建映射。这将要求您即时创建映射(您可以从数据库或文件或其他东西读取)。我个人没有这样做,但我认为你可以尝试解决你的需求。

希望这有帮助。