2011-12-29 41 views
2

生成使用映射HBM文件,我使用的代碼NHibernate的映射,我以這種方式創建會話工廠:通過代碼

  var mapper = new ModelMapper(); 
     mapper.AddMappings(Assembly.GetExecutingAssembly().GetExportedTypes()); 

     HbmMapping domainMapping = mapper.CompileMappingForAllExplicitlyAddedEntities(); 

     const bool executeScript = false; 

     var configuration = new Configuration(); 
     configuration.DataBaseIntegration(c => 
               { 
                c.Dialect<MsSql2005Dialect>(); 
                c.ConnectionString = 
                 ConfigurationManager.ConnectionStrings["ShopConnectionString"] 
                  .ConnectionString; 
                c.KeywordsAutoImport = Hbm2DDLKeyWords.AutoQuote; 
               }); 
     configuration.AddMapping(domainMapping); 

     _sessionFactory = configuration.BuildSessionFactory(); 

我需要獲得相應的HBM文件。

我該如何做到這一點?

+0

謝謝,我將映射部分提取到一個返回HbmMapping對象的新方法。 因此,我可以使用它並在單元測試中調用AsString。 – 2011-12-29 16:13:21

+0

不用擔心,也許你可以將正確答案標記爲「正確」。 – Rippo 2011-12-30 10:24:27

回答

4

兩種方式: -

//This will write all the XML into the bin/mappings folder 
mapper.CompileMappingForEachExplicitlyAddedEntity().WriteAllXmlMapping(); 

要小心這種方法的上述作爲你的asp.net應用程序在你的bin文件夾中檢測到的變化將回收,另一種方式是: -

var mapping = mapper.CompileMappingForAllExplicitlyAddedEntities(); 
//you could add a breakpoint here! 
var mappingXml = mapping.AsString(); 
1

使用AsString()擴展方法:

domainMapping.AsString() 

它會給你可以保存到文件的xml。您可以調用該方法,例如在構建SessionFactory之前。