2011-12-29 4 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を呼び出すことができます。 –

+0

心配することなく、正しい答えを「正しい」とマークすることができます。 – Rippo

答えて

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をビルドする前に