Be.St.
Be.St.

Reputation: 4181

Generate HBM files using mapping by code

I'm using NHibernate mapping by code and I'm creating the session factory in this way:

            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();

I need to get the corresponding HBM files.

How can I achieve that?

Upvotes: 3

Views: 1014

Answers (2)

Toni Parviainen
Toni Parviainen

Reputation: 2377

Use the AsString() extension method:

domainMapping.AsString()

It will give you the xml which you can save into a file. You can call that method e.g. before you build the SessionFactory.

Upvotes: 1

Rippo
Rippo

Reputation: 22424

Two ways:-

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

be careful of this method above as your asp.net app will recycle as changes are detected in your bin folder, another way is:-

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

Upvotes: 6

Related Questions