我不相信NHibernate能够一起编译创建一个单一的映射。如果目标是在一个应用程序与另一个应用程序中使用不同的映射集,则只需创建两个不同的映射。如果目标是具有子类,则可以扩展一个SubclassMapping接口。
编辑:
在找过我的笔记,延伸到我的回答有关创建一组不同的映射是,你必须插入到你的应用中的一些功能,需要一个不同的(有时甚至更多的情况下,有时,较少参与)映射。要做到这一点,你需要让NHibernate单独生成它们并将它们分别添加到配置中。使用惯例,这将创建映射的两套独立的(其中包含一些重叠,但不同的映射,entites的)被插入到一个配置:
NHibernateConfiguration.BeforeBindMapping += (sender, args) => args.Mapping.autoimport = false;
var pluginMappings = new PluginMapper().Mappings;
foreach (var hbmMapping in pluginMappings)
NHibernateConfiguration.AddDeserializedMapping(hbmMapping, "PluginModel");
var mainAppMappings = new AppMapper().Mappings;
foreach (var hbmMapping in mainAppMappings)
NHibernateConfiguration.AddDeserializedMapping(hbmMapping, "AppModel");
谢谢。目标是插件可以修改映射,即EntityMap1将驻留在插件的主应用程序和EntityMap2中。通过使用Linq to XML修改生成的XML来解决此问题(请参阅我的代码答案)。 – Test 2012-03-05 18:05:11