现在,会话工厂只找到嵌入在当前程序集中的所有.hbm.xml文件。我现在有一种情况,我只希望会话工厂加载我指定的映射列表。我怎么能这样做?
谢谢,
艾萨克
答案 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方法动态创建映射。这将要求您即时创建映射(您可以从数据库或文件或其他东西读取)。我个人没有这样做,但我认为你可以尝试解决你的需求。
希望这有帮助。